- 题目详述
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
二.自我探寻
思路:跟之前写的螺旋矩阵一样,依然判断边界是否走过 然后改变方向 直到走到最后一个
代码:class Solution {
public int[][] generateMatrix(int n) {
int[][] matrix=new int[n][n];
int[][] nums=new int[n][n];
int a=0;/*x轴*/
int b=0;/*y轴*/
int q=1;/*0往上,1往右,2往下,3往左*/
int j=1;
while(j<=n*n)
{
matrix[b][a]=j;
nums[b][a]=1;
if(j==n*n)
{
break;
}
switch(q)
{
case 0:
b--;
break;
case 1:
a++;
break;
case 2:
b++;
break;
case 3:
a--;
break;
}
if(a>=n||(q==1&&nums[b][a]==1))
{
q=2;
a--;
continue;
}
else if(a<0||(q==3&&nums[b][a]==1))
{
q=0;
a++;
continue;
}
else if(b>=n||(q==2&&nums[b][a]==1))
{
q=3;
b--;
continue;
}
else if(b<0||(q==0&&nums[b][a]==1))
{
q=1;
b++;
continue;
}
j++;
}
return matrix;
}
}
评价:
- 网络学习过程
四.Python实现