【hot100篇-python刷题记录】【螺旋矩阵】

R6-矩阵篇

时隔2日。

印象题:

思路:每次都输出第一行的所有元素。

那就需要想方法把每次的右边一列放到第一行;

这里我们可以使用矩阵的转置,转置后最右边的一列会被放到最后一行,并且刚好矩阵转置是副对角线对称的。

下一步,我们只需要将最后一行放在第一行即可。或者我们可以直接输出最后一行(不可以这样,必须逆序

无论怎么样我们都需要考虑到形式问题,就是矩阵是二维数组,我们不能进行列表操作。

因此需要先压缩成一行(类似列表形式),再列表化。

靠,理解错了

*并不是转置操作

*是解包操作,运行后将二维数组拆开。

zip()是元组操作,迭代i.对于每个参数都取[n][i]个数。

所以会变成(),(),()都是元组

list()变成列表装起来

这个时候已经是列表了,可以使用[::-1]进行逆序了

要想每个元素都是列表形式[[],[],[]]

需要matrix=[list(row) for row in matrix]

class Solution:
    def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
        ret=[]
        while matrix:
            ret+=matrix.pop(0)
            matrix=list(zip(*matrix))[::-1]
        return ret

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值