54. 螺旋矩阵

本题需要螺旋打印一个二维数组,即每打印一层旋转一次。

所以本题需要用到旋转矩阵这一操作。 

转载自 https://blog.csdn.net/ezio23/article/details/81414092

zip可以将输入的两个一维列表,逆时针转置成一个二维数组 zip(a,b)

zip(*zipped) 可以将一个二维数组,逆时针转置成二维数组

所以在本题中需要使用到 顺时针转置还需要逆序:

  

class Solution:
    def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
        res = []
        while matrix:
            res += matrix.pop(0)
            matrix = list(map(list,zip(*matrix)))[::-1]      
        return res
 
在加粗的一行中 外层的List用来将Object转化成list,内层的List用来将内层的tuple 转化成List,从而可以pop
 
 
原文地址:https://www.cnblogs.com/ChevisZhang/p/12237873.html