题目:
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
思路:
给定四个边界,left = 0,right = n-1, up = 0,down = n-1,
然后每次进行四遍循环,
(top)left->right 循环结束后up+1
(right)up->down 循环结束后right-1
(bottom)right->left 循环结束后down-1
(left)down->up 循环结束后left+1
结束条件是i>n*n。
java代码:
class Solution {
public int[][] generateMatrix(int n) {
int[][] res=new int[n][n];
if (n == 0) {
return res;
}
int left=0;
int right=n-1;
int up=0;
int down=n-1;
int i=1;
while(i<=n*n){
//最上面的从最左边到最右边 横
for (int col = left; col <= right; col++) {
res[up][col]=i;
i++;
}
//最上面的一行已经加完了 上边向下走一行所以++
up++;
if (i<=n*n){
for (int j = up; j <=down ; j++) {
res[j][right]=i;
i++;
}
right--;
}
//从右向左走
if (i<=n*n){
for (int j = right; j >=left ; j--) {
res[down][j]=i;
i++;
}
down--;
}
//从下向上走
if (i<=n*n){
for (int j = down; j >=up ; j--) {
res[j][left]=i;
i++;
}
left++;
}
}
return res;
}
}
由于水平有限,文章中难免会有一些错误,有纰漏之处恳请各位大佬不吝赐教!
及时更新最新文章和学习资料,一起来学习: