题目
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
方案
class Solution {
public int[][] generateMatrix(int n) {
int[][] matrix = new int[n][n];
int tmp = 1;
int rowstart = 0;
int culstart = 0;
int rowend = n - 1;
int culend = n - 1;
while (culstart < culend && rowstart < rowend) {
for (int i = culstart; i <= culend; i++) {
matrix[rowstart][i] = tmp++;
}
rowstart++;
for (int j = rowstart; j <= rowend; j++) {
matrix[j][culend] = tmp++;
}
culend--;
for (int i = culend; i >= culstart; i--) {
matrix[rowend][i] = tmp++;
}
rowend--;
for (int j = rowend; j >= rowstart; j--) {
matrix[j][culstart] = tmp++;
}
culstart++;
}
if (n*n+1>tmp)
matrix[rowstart][culstart]=tmp++;
return matrix;
}
}
复杂度计算