【leetcode-數(shù)組】螺旋矩陣 II
題目:
給定一個(gè)正整數(shù) n,生成一個(gè)包含 1 到 n2 所有元素,且元素按順時(shí)針順序螺旋排列的正方形矩陣。
示例:
輸入: 3
輸出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
思路:
給定四個(gè)邊界,left = 0,right = n-1, up = 0,down = n-1,
然后每次進(jìn)行四遍循環(huán),
(top)left->right 循環(huán)結(jié)束后up+1
(right)up->down 循環(huán)結(jié)束后right-1
(bottom)right->left 循環(huán)結(jié)束后down-1
(left)down->up 循環(huán)結(jié)束后left+1
結(jié)束條件是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++;
}
//最上面的一行已經(jīng)加完了 上邊向下走一行所以++
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;
}
}