【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

相关推荐
hn小菜鸡6 分钟前
LeetCode 1356.根据数字二进制下1的数目排序
数据结构·算法·leetcode
zhuiQiuMX11 分钟前
分享今天做的力扣SQL题
sql·算法·leetcode
music&movie1 小时前
算法工程师认知水平要求总结
人工智能·算法
laocui12 小时前
Σ∆ 数字滤波
人工智能·算法
yzx9910132 小时前
Linux 系统中的算法技巧与性能优化
linux·算法·性能优化
全栈凯哥3 小时前
Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解
java·算法·leetcode·链表
全栈凯哥3 小时前
Java详解LeetCode 热题 100(27):LeetCode 21. 合并两个有序链表(Merge Two Sorted Lists)详解
java·算法·leetcode·链表
SuperCandyXu3 小时前
leetcode2368. 受限条件下可到达节点的数目-medium
数据结构·c++·算法·leetcode
Humbunklung3 小时前
机器学习算法分类
算法·机器学习·分类
Ai多利4 小时前
深度学习登上Nature子刊!特征选择创新思路
人工智能·算法·计算机视觉·多模态·特征选择