顺时针打印,这个题主要是用了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
好了。