我是靠谱客的博主 忧伤电脑,最近开发中收集的这篇文章主要介绍leetcode - Spiral Matrix,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

分情况模拟
Time: O ( n ) O(n) O(n)
Space: O ( n ) O(n) O(n)

from functools import reduce
class Solution:
def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
def helper(left,right,top,down):
output=[]
if left==right:
output=[matrix[i][left] for i in range(top,down+1)]
elif top==down:
output=matrix[top][left:right+1]
else:
output.extend(matrix[top][left:right]) #right stroke
output.extend([matrix[i][right] for i in range(top,down)]) #down stroke
output.extend(matrix[down][left+1:right+1][::-1]) #left stroke
output.extend([matrix[i][left] for i in range(top+1,down+1)][::-1]) #up stroke
return output
tally=[]
left,right,top,down=0,len(matrix[0])-1,0,len(matrix)-1
while left<=right and top<=down: #not sure
tally.append(helper(left,right,top,down))
left,right,top,down=left+1,right-1,top+1,down-1
return reduce(lambda a,b:a+b,tally)

神仙解法(StefanPochmann)
1.[*matrix.pop(0)]去掉第一行
2.[*zip(*matrix)][::-1]逆时针旋转矩阵(转置+逆向行)
3.然后对旋转后的矩阵递归

def spiralOrder(self, matrix):
return matrix and [*matrix.pop(0)] + self.spiralOrder([*zip(*matrix)][::-1])

最后

以上就是忧伤电脑为你收集整理的leetcode - Spiral Matrix的全部内容,希望文章能够帮你解决leetcode - Spiral Matrix所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部