题目:59. 螺旋矩阵 II
解题思路
- 手动模拟螺旋矩阵,分别实现四个方向的代码,将数组依次填入数组中即可
- 需要注意的是,如果n为奇数,说明最后只剩下中间的一个位置,将最后一个数直接填入即可;若n为偶数,则正好能够遍历n/2遍
class Solution {
public int[][] generateMatrix(int n) {
int[][] res = new int[n][n];
int count = 1;
int start = 0;
int loop = 0;
int i, j;
while(loop++ < n/2) {
for(j=start; j<n-loop; j++) {
res[start][j] = count++;
}
for(i=start; i<n-loop; i++) {
res[i][j] = count++;
}
for(; j>=loop; j--) {
res[i][j] = count++;
}
for(; i>=loop; i--) {
res[i][j] = count++;
}
start++;
}
if(n % 2 == 1) {
res[start][start] = count;
}
return res;
}
}