本文主要是介绍【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
这篇关于【hot100篇-python刷题记录】【螺旋矩阵】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!