领扣笔记
程序员文章站
2022-05-20 13:59:44
...
螺旋矩阵 II
题目:给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
我自己写的解答,AC,记录笔记
class Solution {
public int[][] generateMatrix(int n) {
if (n == 0) return null;
int[][] res = new int[n][n];
int x = 0, y = 0, j = 1, num = n;
while (n > 0) {
for (int i = 0; i < n - 1; i++) {
res[x][y++] = j++;
}
for (int i = 0; i < n - 1; i++) {
res[x++][y] = j++;
}
for (int i = 0; i < n - 1; i++) {
res[x][y--] = j++;
}
for (int i = 0; i < n - 1; i++) {
res[x--][y] = j++;
}
x++;
y++;
n -= 2;
}
//注意这里,如果n为奇数的话,到最后一次最中心的元素因为for循环中条件没有满足不会去赋值,所以这里要检验一下最后一个元素赋值是否被跳过了
if (n == -1) {
res[(num-1)/2][(num-1)/2] = j;
}
return res;
}
}
路漫漫其修远兮,共勉