https://leetcode.com/problems/spiral-matrix/
单独写了个剥离最外层的函数
如果是一般情况就顺时针输出数字 如果只有两层或者一层 单独处理
每剥离完一圈 长 宽均减一 很简单 注意边界
class Solution:
# @param matrix, a list of lists of integers
# @return a list of integers
def circleOutPut(self,matrix):
n=len(matrix[0])
m=len(matrix)
solution=[]
if m==1 or n==1:
if m==1:
for i in range(n):
solution.append(matrix[0][i])
else:
for i in range(m):
solution.append(matrix[i][0])
elif m==2:
for i in range(n):
solution.append(matrix[0][i])
for i in range(n)[::-1]:
solution.append(matrix[1][i])
else:
solution=matrix[0]
for i in range(1,m-1):
solution.append(matrix[i][n-1])
for i in range(0,n)[::-1]:
solution.append(matrix[m-1][i])
for i in range(1,m-1)[::-1]:
solution.append(matrix[i][0])
return solution
def spiralOrder(self,matrix):
list=[]
if matrix==[]:
return list
else:
n=len(matrix[0])
m=len(matrix)
while m>0 and n>0:
temp=Solution().circleOutPut(matrix)
list=list+temp
if m>2 and n>2:
for i in range(m):
del matrix[i][n-1]
del matrix[i][0]
del matrix[m-1]
del matrix[0]
m=m-2
n=n-2
return list