【LeetCode】螺旋矩阵

目录


一、题目

给你一个 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 == matrixi.length

1 <= m, n <= 10

-100 <= matrixij <= 100


二、解法

就模拟就好了,顺时针模拟

但是要注意各种变量,什么时候加,什么时候减,最好拿笔画一下,不然容易搞乱


完整代码

python 复制代码
class Solution:
    def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
        m, n = len(matrix), len(matrix[0])
        l, r, t, b = 0, n - 1, 0, m - 1
        cnt = m * n
        res = []
        while cnt > 0:
            i = l
            # 上边
            while i <= r and cnt > 0:
                res.append(matrix[t][i])
                cnt -= 1
                i += 1
            t += 1
            i = t
            # 右边
            while i <= b and cnt > 0:
                res.append(matrix[i][r])
                cnt -= 1
                i += 1
            r -= 1
            i = r
            # 下边
            while i >= l and cnt > 0:
                res.append(matrix[b][i])
                cnt -= 1
                i -= 1
            b -= 1
            i = b
            # 左边
            while i >= t and cnt > 0:
                res.append(matrix[i][l])
                cnt -= 1
                i -= 1
            l += 1
        return res

相关推荐
HPtiger6 小时前
数据结构——选择排序
数据结构·算法·排序算法
康实训6 小时前
老年评估仿真实训平台架构设计与老年人能力评估实训室教学落地实践
大数据·人工智能·算法·实训室·实训室建设
DongQiShanRen6 小时前
六根硬件映射(四):归属澄清、两处不一致与卷十一总表
开发语言·人工智能·算法·rust·哈希算法·集成学习
CCblandy6 小时前
雪花 ID 四个边界实测:时钟回拨重号 500 个,前端 JSON.parse 直接丢精度
后端·python·算法·性能优化·架构
丑梨数据6 小时前
信创环境里跑文档工具:格式兼容与本地合规的几个坑
数据结构·人工智能·算法·决策树·排序算法
erzong2318 小时前
Linux操作系统:线程概念与控制
linux·算法
Nil2089 小时前
leetcode 5最长回文子串
算法·leetcode·职场和发展
xxwl5859 小时前
区域赛分类题解
c++·笔记·学习·算法
m0_674571979 小时前
力扣 hot 100 python
python·算法·leetcode
青少儿编程课堂9 小时前
蓝桥杯+全国青少年信息素养大赛+电子学会PythonC/C++考级:最长公共子序列LCS解析
c++·python·算法·bfs·信息学竞赛