54. 螺旋矩阵
已解答
中等
相关标签
相关企业
提示
给你一个 m
行 n
列的矩阵 matrix
,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素
class Solution(object):
def spiralOrder(self, matrix):
"""
:type matrix: List[List[int]]
:rtype: List[int]
"""
rtlist=[]
m=len(matrix)
n=len(matrix[0])
if m<=2 or n<=2:
count=1
else:
count = (min(m,n)+1)/2
count = int(count)
# print(count)
for counti in range(count):
print(counti)
top=counti
for j in range(counti,n-counti):
rtlist.append(matrix[top][j])
right=n-1-counti
for i in range(counti+1,m-counti):
rtlist.append(matrix[i][right])
bottom=m-1-counti
left=counti
if bottom > top and left < right:
for j in range(n-counti-2,counti,-1):
rtlist.append(matrix[bottom][j])
# if left < right:
for i in range(m-counti-1,counti,-1):
rtlist.append(matrix[i][left])
return rtlist
非常麻烦的,这里我们首先要考虑到底要玄幻几次算出一个count,这个count实际上就是min+1/2,一开始我没有搞清楚这个规律导致一系列错误,还有就是第一次算行的时候把一整行要都加进去,因为有只有一行的情况,还有就是当左右上下边界不满足的时候不能加入的条件!