题目要求
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
解题思路
代码:
class Solution {
public int[][] generateMatrix(int n) {
int[][] res=new int[n][n];
int start=1;
int tmp=n;
int tep=n*n;
int i=0;
while (start<tep)
{
circle(start,tmp,res,i++);
start=(n-1)*4+start;
n=n-2;
}
if(tmp%2!=0)
res[res.length/2][res.length/2]=tep;
return res;
}
public void circle(int start,int n,int[][] res,int line)
{
for(int i=line;i<n-line-1;i++)
res[line][i]=start++;
for(int i=line;i<n-line-1;i++)
res[i][n-line-1]=start++;
for(int i=n-line-1;i>line;i--)
res[n-line-1][i]=start++;
for(int i=n-line-1;i>line;i--)
res[i][line]=start++;
}
}
效果
info
解答成功:
执行耗时:0 ms,击败了100.00% 的Java用户
内存消耗:36.3 MB,击败了92.29% 的Java用户