LeeCode题库第五十四题

项目场景:

给你一个 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


问题描述

        代码实现了一个螺旋遍历二维矩阵的算法,将矩阵中的所有元素按顺时针螺旋顺序提取到一个列表中。代码通过定义四个方向(右、下、左、上)来控制遍历路径,从矩阵的左上角开始,依次访问每个元素并将其添加到结果列表中,同时将访问过的元素标记为 None 以避免重复访问。当遍历到矩阵边界或已访问过的位置时,方向会顺时针切换。最终,代码在遍历完所有 m * n 个元素后,返回按螺旋顺序排列的元素列表。

class Solution:
    def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
        DIRS=(0,1),(1,0),(0,-1),(-1,0)#右下左上
        m,n=len(matrix),len(matrix[0])
        ans=[]
        i=j=di=0
        for _ in range(m*n):
            ans.append(matrix[i][j])
            matrix[i][j]=None
            x,y=i+DIRS[di][0],j+DIRS[di][1]

            if x<0 or x>=m or y<0 or y>=n or matrix[x][y] is None:
                di=(di+1)%4
            i+=DIRS[di][0]
            j+=DIRS[di][1]
        return ans
        

本题提交情况。

 

        以上为本篇文章的全部内容,感谢你抽出宝贵的时间阅读这篇文章。如果你有任何疑问或建议,欢迎在评论区留言,我们一起交流进步。愿你的代码之路越走越顺,生活充满阳光!  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值