每日leetcode-数组-54. 螺旋矩阵
Posted LLLLgR
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日leetcode-数组-54. 螺旋矩阵相关的知识,希望对你有一定的参考价值。
分类:数组-特定顺序遍历二维数组
题目描述:
给你一个 m
行 n
列的矩阵 matrix
,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
解题思路:每次取第一行,之后把剩下元素逆时针旋转90度,取第一行,再依次循环。
class Solution: # matrix类型为二维列表,需要返回列表 def spiralOrder(self,matrix: List[List[int]]) -> List[int]: # write code here if not matrix: return [] res = [] while matrix: res.extend(matrix.pop(0)) matrix = self.TurnM(matrix) return res def TurnM(self, matrix): if not matrix: return matrix res = [] m = len(matrix[0]) for i in range(m-1, -1, -1): res.append([line[i] for line in matrix]) return res
自己定义翻转函数TurnM,调用时为self.函数名。
class Solution: def spiralOrder(self, matrix: List[List[int]]) -> List[int]: res = [] while matrix: res += matrix.pop(0) # 每次提取第一排元素 matrix = list(zip(*matrix))[::-1] #[::-1]表示倒序输出 #将剩余的元素进行逆时针旋转九十度 return res
zip函数:
""" 1 2 3 4 5 6 7 8 9 matrix.pop(0) 4 5 6 7 8 9 matrix = list(zip(*matrix))[::-1] 6 9 5 8 4 7 matrix.pop(0) 5 8 4 7 matrix = list(zip(*matrix))[::-1] 8 7 5 4 matrix.pop(0) 5 4 matrix = list(zip(*matrix))[::-1] 4 5 matrix.pop(0) 5 matrix = list(zip(*matrix))[::-1] 5 matrix.pop(0) done! """
以上是关于每日leetcode-数组-54. 螺旋矩阵的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 524. 通过删除字母匹配到字典里最长单词(动态规划) / 695. 岛屿的最大面积 / 54. 螺旋矩阵(背)