Skip to content

54. 螺旋矩阵 ​

  • 题号:54
  • 来源:LeetCode
  • 难度:中等
  • 标签:矩阵 模拟
  • 语言:TypeScript · Python
  • 解法:2 个
  • 作者:lmliheng
  • 最近更新:2026-09-29

TypeScript ​

TypeScript · O(m*n) 时间 · O(1) 空间 · 更新于 2026-09-27

四边界收缩模拟螺旋读取

typescript
/**
 * @difficulty medium
 * @tags 矩阵,模拟
 * @time O(m*n)
 * @space O(1)
 * @note 四边界收缩模拟螺旋读取
 * @54. 螺旋矩阵
 */

var spiralOrder = function (matrix: number[][]) {
    let res = []
    let m = matrix.length
    let n = matrix[0].length
    let t = 0
    let r = n - 1
    let b = m - 1
    let l = 0
    let num = 1
    let nums = m * n
    while (num <= nums) {
        for (let i = l; i <= r; i++) {
            res.push(matrix[t][i])
            num++
        }
        t++
        for (let i = t; i <= b; i++) {
            res.push(matrix[i][r])
            num++
        }
        r--
        if (t > b) break
        for (let i = r; i >= l; i--) {
            res.push(matrix[b][i])
            num++
        }
        b--
        if (l > r) break
        for (let i = b; i >= t; i--) {
            res.push(matrix[i][l])
            num++
        }
        l++

    }
    return res
};

源码:ts/leetcode/54. 螺旋矩阵.ts

Python ​

Python · O(n*m) 时间 · O(1) 空间 · 更新于 2026-09-29

四条边界收缩模拟螺旋遍历

python
"""
@difficulty medium
@tags 矩阵,模拟
@time O(n*m)
@space O(1)
@note 四条边界收缩模拟螺旋遍历
54. 螺旋矩阵
"""

class Solution:
    def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
        res=[]
        m=len(matrix)
        n=len(matrix[0])
        l=0
        r=n-1
        t=0
        b=m-1
        while l<=r and t<=b:
            for i in range(l,r+1,1):
                res.append(matrix[t][i])
            t+=1
            for i in range(t,b+1,1):
                res.append(matrix[i][r])
            r-=1
            if t <= b:
                for i in range(r,l-1,-1):
                    res.append(matrix[b][i])
                b-=1
            if l<=r:
                for i in range(b,t-1,-1):
                    res.append(matrix[i][l])
                l+=1

        return res

源码:python/leetcode/hot100/19.py


在 GitHub 上查看题目所在目录:lmliheng/algorithm