链接:https://leetcode-cn.com/problems/spiral-matrix-ii
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
//其实思路和Leetcode 54差不多,就是按规律遍历,要细心一点,我也改了半天才AC....= =
class Solution {
public int[][] generateMatrix(int n) {
int[]arr=new int[(int)Math.pow(n,2)];
int[][]res=new int[n][n];
for(int i=0;i<arr.length;i++){
arr[i]=i+1;
}
int c=0,r=0;
int cow=n-1,row=n-1;
int j=0;
while(c<=cow && r<=row && j<arr.length){
for(int i=c;i<=cow && j<arr.length;i++)
res[r][i]=arr[j++];
for(int i=r+1;i<=row && j<arr.length;i++)
res[i][cow]=arr[j++];
if(r!=row)
for(int i=cow-1;i>=c && j<arr.length;i--)
res[row][i]=arr[j++];
if(c!=cow)
for(int i=row-1;i>r && j<arr.length;i--)
res[i][c]=arr[j++];
c++;cow--;r++;row--;
}
return res;
}
}