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