Leetcode54. 螺旋矩阵(简单模拟)

Posted !0 !

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode54. 螺旋矩阵(简单模拟)相关的知识,希望对你有一定的参考价值。

题目链接:https://leetcode-cn.com/problems/spiral-matrix/

解题思路

我们先定义四个边界,l代表左边界,r代表右边界,t代表上边界,d代表下边界。我们是按顺时针方向走,所以依次遍历边界之间的值,最后添加到ans集合中。

代码

class Solution {
    public List<Integer> spiralOrder(int[][] matrix) {
        List<Integer> ans = new ArrayList<>();
        int l = 0, r = matrix[0].length - 1, t = 0, d = matrix.length - 1;  //定义边界
        while (true) {
            for(int i = l; i <= r; i++) //从左往右走
                ans.add(matrix[t][i]);
            if(++t > d) break;  //上边界+1
            for(int i = t; i <= d; i++) //从上往下走
                ans.add(matrix[i][r]);
            if(l > --r) break;  //右边界-1
            for(int i = r; i >= l; i--) //从右往左走
                ans.add(matrix[d][i]);
            if(t > --d) break;  //下边界-1
            for(int i = d; i >= t; i--) //从下往上走
                ans.add(matrix[i][l]);
            if(++l > r) break;  //上边界+1
        }
        return ans;
    }
}

复杂度分析

  • 时间复杂度: O ( m ∗ n ) O(m * n) O(mn)
  • 空间复杂度: O ( m ∗ n ) O(m * n) O(mn)

以上是关于Leetcode54. 螺旋矩阵(简单模拟)的主要内容,如果未能解决你的问题,请参考以下文章

模拟LeetCode 54. 螺旋矩阵

[leetcode] 54. 螺旋矩阵

leetcode54——螺旋矩阵

leetcode54——螺旋矩阵

LeetCode54. 螺旋矩阵

Leetcode 54.螺旋矩阵