class Solution {
public int[][] generateMatrix(int n) {
int[][] ans = new int[n][n];
int offset = 0;
int start = 0;
int count = 1;
// 左闭右开
int i = 0, j = 0;// (i,j)
while (offset++ < (n / 2)) {
for (i = start, j = start; j < n - offset; j++) {
// 上
ans[i][j] = count++;
}
for (; i < n - offset; i++) {
// 右
ans[i][j] = count++;
}
for (; j >= offset; j--) {
// 下
ans[i][j] = count++;
}
for (; i >= offset; i--) {
// 左
ans[i][j] = count++;
}
start++;
}
if (n % 2 == 1) {
// 中心
ans[start][start] = count;
}
return ans;
}
}
直接看官方代码写的
但是还是一直被卡,边界问题要注意