文章目录
- 题目介绍
- 题解
题目介绍
题解
代码如下:
class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
List<Integer> res = new ArrayList<>();
if (matrix.length == 0){
return res;
}
int l = 0, r = matrix[0].length - 1, t = 0, b = matrix.length - 1, x = 0;
while (true) {
// 从左向右
for (int i = l; i <= r; i++) res.add(matrix[t][i]);
if (++t > b) break; // 上边界t+1,同时判断是否打印完毕(边界是否相遇了)
// 从上向下
for (int i = t; i <= b; i++) res.add(matrix[i][r]);
if (l > --r) break;
// 从右向左
for (int i = r; i >= l; i--) res.add(matrix[b][i]);
if (t > --b) break;
// 从下向上
for (int i = b; i >= t; i--) res.add(matrix[i][l]);
if (++l > r) break;
}
return res;
}
}