Problem: 54. 螺旋矩阵
文章目录
- 思路
- 💖 收缩边界法
思路
👨🏫 参考题解
💖 收缩边界法
⏰ 时间复杂度: O ( n m ) O(nm) O(nm)
🌎 空间复杂度: O ( 1 ) O(1) O(1)
class Solution {public List<Integer> spiralOrder(int[][] matrix){if (matrix.length == 0)return new ArrayList<Integer>();int l = 0;// 左边界int r = matrix[0].length - 1;// 右边界int t = 0;// 上边界int b = matrix.length - 1;// 下边界List<Integer> res = new ArrayList<>();while (true){for (int i = l; i <= r; i++)//顶部 从左到右res.add(matrix[t][i]);if (++t > b)break;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;}
}