和 54 题简直一模一样
也是一圈一圈遍历,然后边遍历边从 1 ~ n^2 存值
class Solution {
public int[][] generateMatrix(int n) {
int num = 1;
int[][] res = new int[n][n];
int left = 0, right = n - 1, top = 0, bottom = n - 1;
while(left <= right && top <= bottom){
//右
for(int i = left; i <= right; i++){
res[top][i] = num;
num++;
}
//下
for(int i = top + 1; i <= bottom; i++){
res[i][right] = num;
num++;
}
if(left < right && top < bottom){
//左
for(int i = right - 1; i > left; i--){
res[bottom][i] = num;
num++;
}
//上
for(int i = bottom; i > top; i--){
res[i][left] = num;
num++;
}
}
left++;
right--;
top++;
bottom--;
}
return res;
}
}