=========================================================================
给你一个正整数 n
,生成一个包含 1
到 n2
所有元素,且元素按顺时针顺序螺旋排列的 n x n
正方形矩阵 matrix
。
1、闭区间上下左右界限
2、循环,每次循环一圈
3、遍历顺序 → ↓ ← ↑ 加入到结果数组
4、注意:
如果存在相等情况只需要前两步即可,
left和right是指的第二个坐标,top和bottom是第一个坐标。
每行遍历要注意除了→以外从第二个开始遍历,↑最后一个不能遍历
优化:由于矩阵一定是正方形的所以可以简化为两个变量
class Solution {
public int[][] generateMatrix(int n) {
int[][] nums=new int[n][n];
int left=0,right=n-1,cur=1;
while(left<=right){
for(int i=left;i<=right;i++){
nums[left][i]=cur++;
}
for(int i=left+1;i<=right;i++){
nums[i][right]=cur++;
}
if(left!=right){
for(int i=right-1;i>=left;i--){
nums[right][i]=cur++;
}
for(int i=right-1;i>left;i--){
nums[i][left]=cur++;
}
}
left++;right--;
}
return nums;
}
}