版权声明:未经允许禁止转载 https://blog.csdn.net/weixin_38481963/article/details/87974527
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
方法和螺旋矩阵一样
解决方案:
public int[][] generateMatrix(int n) {
int k = n*n;
int val = 1;
int ans[][] = new int[n][n];
if(k==0) return ans;
int a = -1, b = -1, c = -1, d = 0;
int i = -1,j = -1;
while(k>0){
a++;b++;c++;d++;
for(i++,j++ ;j<n-a; j++)
{
ans[i][j] = val;val++;k--;
}
if(k==0) break;
for(--j,i++; i<n-b; i++)
{
ans[i][j] = val;val++;k--;
}
if(k==0) break;
for(--i,--j; j>=c; j--)
{
ans[i][j] = val;val++;k--;
}
if(k==0) break;
for(j++,i--; i>=d; i--)
{
ans[i][j] = val;val++;k--;
}
}
return ans;
}