【Leetcode-54.螺旋矩阵】

题目:

给你一个 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]

提示:

  • m == matrix.length
  • n == matrix[i].length
  • 1 <= m, n <= 10
  • -100 <= matrix[i][j] <= 100
详细讲解:

1.首先设定上下左右边界;
2.其次向右移动到最右,此时第一行因为已经使用过了,可以将其从图中删去,体现在代码中就是重新定义上边界;
3.判断若重新定义后,上下边界交错,表明螺旋矩阵遍历结束,跳出循环,返回答案;
4.若上下边界不交错,则遍历还未结束,接着向下向左向上移动,操作过程与第一,二步同理;
5.不断循环以上步骤,直到某两条边界交错,跳出循环,返回答案。

代码实现:
class Solution {
    public List<Integer> spiralOrder(int[][] matrix) {
        int m = matrix.length;
        int n = matrix[0].length;
        List<Integer> nums = new ArrayList<>();
        //定义出上下左右的边界
        int u = 0;
        int d = m - 1;
        int l = 0;
        int r = n - 1;
        while(true) {
            for (int i = l; i <=r; i++) {
                nums.add(matrix[u][i]);
            }
            if(++u > d){
                break;
            }
            for (int i = u; i <= d; i++) {
                nums.add(matrix[i][r]);
            }
            if (--r < l){
                break;
            }
            for (int i = r; i >= l; --i) {
                nums.add(matrix[d][i]);
            }
            if (--d < u) {
                break;
            }
            for (int i = d; i >= u; --i) {
                nums.add(matrix[i][l]);
            }
            if (++l > r) {
                break;
            }
        }
        return nums;
    }
}

相关推荐

  1. LeetCode 54. 螺旋矩阵

    2024-03-20 02:52:01       20 阅读
  2. Golang leetcode59 螺旋矩阵

    2024-03-20 02:52:01       34 阅读
  3. LeetCode59 螺旋矩阵 II

    2024-03-20 02:52:01       31 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-20 02:52:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-20 02:52:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-20 02:52:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-20 02:52:01       18 阅读

热门阅读

  1. 简述从浏览器发出请求到数据返回的全过程

    2024-03-20 02:52:01       20 阅读
  2. UE5.1_自定义配置文件读取

    2024-03-20 02:52:01       18 阅读
  3. KMP算法

    2024-03-20 02:52:01       21 阅读
  4. 抽象类abstract

    2024-03-20 02:52:01       19 阅读
  5. 安达发|APS高级计划与排产软件在家具业的新趋势

    2024-03-20 02:52:01       21 阅读
  6. 02 Statement和PreparedStatement

    2024-03-20 02:52:01       19 阅读
  7. SpringBoot项目串口通讯之jSerialComm

    2024-03-20 02:52:01       22 阅读
  8. 代码随想录算法训练营|一刷总结与反思

    2024-03-20 02:52:01       25 阅读
  9. 73_Pandas获取分位数/百分位数

    2024-03-20 02:52:01       19 阅读