LeetCode 刷题,二哥带你轻松掌握螺旋矩阵
2024 年 11 月 20 日这天,鲁迅定下了一个小目标,接下来连续更新 46 天,把 LeetCode 100 搞定,下面开始更新 Spring Boot 的教程,结合技术派一起来。今天先搞定 054.螺旋矩阵。
题意
给你一个 m
行 n
列的矩阵 matrix
,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
难度
中等
示例
示例1:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]
示例2:
输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]
分析
按照螺旋顺序,可以看成一圈一圈地剥开矩阵:
- 从左到右(遍历当前上边界)。
- 从上到下(遍历当前右边界)。
- 从右到左(遍历当前下边界)。
- 从下到上(遍历当前左边界)。
每遍历完一圈,就需要缩小边界,直到所有元素都被遍历。
我们可以用 4 个变量 top, bottom, left, right 来分别表示上下左右的边界。
每次遍历一圈后,更新这些边界,直到 top > bottom 或 left > right。
class Solution05401 {
public List<Integer> spiralOrder(int[][] matrix) {
List<Integer> result = new ArrayList<>();
if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
真诚点赞 诚不我欺
回复