思路:
这种题我第一次确实没做出来,第一次做的时候一圈一圈处理,发现圈数越往里,越乱,原来之前是没从圈数开始遍历。**思路:**第一个大循环先遍历圈数,一共遍历n/2圈,如果是奇数那就最后处理中间那个小点就行,然后是在每一圈有四条边,我们对每一条边进行处理,每条边采用左闭右开的区间,每条边的最后一个点交给下一条边来进行处理,这样代码就不会乱了
代码:
java
class Solution {
public int[][] generateMatrix(int n) {
int[][] nums = new int[n][n];
int startX = 0;
int startY = 0;
int offset = 1;
int loop = 1;
int count = 1;
int i, j;
while (loop <= n / 2) {
for (j = startY; j < n - offset; j++) {
nums[startX][j] = count++;
}
for (i = startX; i < n - offset; i++) {
nums[i][j] = count++;
}
for (; j > startY; j--) {
nums[i][j] = count++;
}
for (; i > startX; i--) {
nums[i][j] = count++;
}
startX++;
startY++;
offset++;
loop++;
}
if (n % 2 != 0) {
nums[startX][startY] = count;
}
return nums;
}
}