解题思路:
与 54.螺旋矩阵相似
只是换成了输入n,生成矩阵。
留意题目要求输出从1开始,所有num= 1,后续 < n * n
class Solution {
public int[][] generateMatrix(int n) {
int[][]matrix = new int[n][n];
int upper = 0, left = 0, lower = n - 1, right = n - 1;
int num = 1;
while(num <= n * n){
//从左到右
if(upper <= lower){
for(int i = left; i <= right; i++){
matrix[upper][i] = num++;
}
upper++;//上边界下移
}
//从上到下
if(left <= right){
for(int j = upper; j <= lower; j++){
matrix[j][right] = num++;
}
right--;//右边界左移
}
//从右到左
if(upper <= lower){
for (int i = right; i >= left; i--){
matrix[lower][i] = num++;
}
lower--;//下边界上移
}
//从下到上
if(left <= right){
for(int j = lower; j >= upper; j--){
matrix[j][left] = num++;
}
left++;//左边界右移
}
}
return matrix;
}
}