盒子
盒子

60_螺旋矩阵_leetcode

给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。

输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]

题解: 与题目54.螺旋矩阵一样,代码模拟即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Solution {
public int[][] generateMatrix(int n) {
int[][] ans = new int[n][n];
int r1 = 0, r2 = ans.length - 1;
int c1 = 0, c2 = ans[0].length - 1;
int val = 1;
while (r1 <= r2 && c1 <= c2) {
for (int c = c1; c <= c2; c++) {
ans[r1][c] = val++;
}
for (int r = r1 + 1; r <= r2; r++) {
ans[r][c2] = val++;
}
if (r1 < r2 && c1 < c2) {
for (int c = c2 - 1; c > c1; c--) {
ans[r2][c] = val++;
}
for (int r = r2; r > r1; r--) {
ans[r][c1] = val++;
}
}
r1++;
r2--;
c1++;
c2--;
}
return ans;
}
}

AC传送门leetcode

支持一下
扫一扫,支持沈健
  • 微信扫一扫
  • 支付宝扫一扫