盒子
盒子

54_螺旋矩阵_leetcode

给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。

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

题解: 纯代码模拟,见代码

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
30
31
class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
if (matrix.length == 0) {
return Collections.emptyList();
}
List<Integer> ans = new ArrayList<>(matrix.length * matrix[0].length);
int r1 = 0, r2 = matrix.length - 1;
int c1 = 0, c2 = matrix[0].length - 1;
while (r1 <= r2 && c1 <= c2) {
for (int c = c1; c <= c2; c++) {
ans.add(matrix[r1][c]);
}
for (int r = r1 + 1; r <= r2; r++) {
ans.add(matrix[r][c2]);
}
if (r1 < r2 && c1 < c2) {
for (int c = c2 - 1; c > c1; c--) {
ans.add(matrix[r2][c]);
}
for (int r = r2; r > r1; r--) {
ans.add(matrix[r][c1]);
}
}
r1++;
r2--;
c1++;
c2--;
}
return ans;
}
}

AC传送门leetcode

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