跟着专注于计算机视觉的AndyJ的妈妈我学算法之每日一题leetcode剑指Offer29顺时针打印矩阵

顺时针打印,这个题主要是用了python的zip操作。这个操作学好就行了。
题:

剑指 Offer 29. 顺时针打印矩阵
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。

示例 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]

因为zip刚好就是按列叠成一个元组,然后这样就刚好是想当与把列变为行。
思路就是,打印第一行,然后旋转matrix,然后再打印第一行,直到完。

class Solution:
    def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
        res = []
        while matrix:
            res += matrix.pop(0)
            matrix = [list(m) for m in zip(*matrix)][::-1]
            # matrix = list(zip(*matrix))[::-1]  # 两种转list都可以
        return res

好了。

猜你喜欢

转载自blog.csdn.net/mianjiong2855/article/details/107711808