给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
思路:定义四个方向变量,模拟一下即可。
class Solution {
public int[][] generateMatrix(int n) {
int[][] ans=new int[n][n];
int x=0,y=-1,a=1,b=0,c=0,d=0,num=0,sum=n,t=1;
while(sum>0)
{
if(a>0) y++;
else if(b>0) x++;
else if(c>0) y--;
else if(d>0) x--;
ans[x][y]=t++;
num++;
if(num==sum)
{
num=0;
if(a>0) {a=0;b=1;sum--;}
else if(b>0) {b=0;c=1;}
else if(c>0) {c=0;d=1;}
else if(d>0) {d=0;a=1;}
}
if(t==n*n+1 || sum==0)
break;
}
return ans;
}
}