題目地址:
https://leetcode.com/problems/spiral-matrix-ii/
給定一個正整數,生成邊長等於的旋轉矩陣。可以設四個變量,分別表示行開頭、結束,列開頭、結束,每次生成完一行或者一列後就相應調整這些變量,直到生成結束。代碼如下:
public class Solution {
public int[][] generateMatrix(int n) {
int[][] matrix = new int[n][n];
if (n <= 0) {
return matrix;
}
int num = 1, rowbegin = 0, rowend = n - 1, colbegin = 0, colend = n - 1;
// 每次填完一行或者一列,就相應調整
while (rowbegin <= rowend && colbegin <= colend) {
for (int i = colbegin; i <= colend; i++) {
matrix[rowbegin][i] = num++;
}
rowbegin++;
for (int i = rowbegin; i <= rowend; i++) {
matrix[i][colend] = num++;
}
colend--;
for (int i = colend; i >= colbegin; i--) {
matrix[rowend][i] = num++;
}
rowend--;
for (int i = rowend; i >= rowbegin; i--) {
matrix[i][colbegin] = num++;
}
colbegin++;
}
return matrix;
}
}
時間複雜度,空間。