【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 == matrix[i].length

1 <= m, n <= 10

-100 <= matrix[i][j] <= 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

相关推荐
历程里程碑28 分钟前
C++ 10 模板进阶:参数特化与分离编译解析
c语言·开发语言·数据结构·c++·算法
星辞树1 小时前
从 In-context Learning 到 RLHF:大语言模型的范式跃迁
算法
再__努力1点1 小时前
【68】颜色直方图详解与Python实现
开发语言·图像处理·人工智能·python·算法·计算机视觉
mingchen_peng1 小时前
第一章 初识智能体
算法
百锦再1 小时前
国产数据库的平替亮点——关系型数据库架构适配
android·java·前端·数据库·sql·算法·数据库架构
Tipriest_2 小时前
旋转矩阵,齐次变换矩阵,欧拉角,四元数等相互转换的常用代码C++ Python
c++·python·矩阵
晨曦夜月2 小时前
笔试强训day5
数据结构·算法
H_z___2 小时前
Hz的计数问题总结
数据结构·算法
她说彩礼65万2 小时前
C# 反射
java·算法·c#