- Spiral Matrix
Given an m x n matrix, return all elements of the matrix in spiral order.
思路:螺旋矩阵的“削水果”法
通过螺旋联想到“削水果”,即将矩阵“削头”(取第一行,并去掉第一行)后旋转90°(将剩下的矩阵转置),再继续“削头”,从而模拟螺旋。
class Solution:
def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
n = []# 结果
while matrix:# 判断matrix是否还有行,有就“削”,无就结束
n += matrix.pop(0)# 将matrix第一行的所有元素给n,即“削头”
matrix = list(zip(*matrix))[::-1]# 旋转90°,等待下次被“削”,
#即matrix剩下的部分进行转置
return n