题目解析:
确定四个边界(上、下、左、右),确定螺旋轨迹是先右后下再左然后往上,所以按照轨迹,只要没有达到边界就一直走,达到边界之后就换个方向,
class Solution(object):
def spiralOrder(self, matrix):
"""
:type matrix: List[List[int]]
:rtype: List[int]
"""
i = 0
j = 0
L = []
m = len(matrix)
n = len(matrix[0])
L.append(matrix[i][j]) # 起始点
l = 0 #左边界
r = n-1 #右边界
t = 1 #上边界,因为刚开始往右走,已经占了一行,所有上边界从1开始
b = m-1 #下边界
while l < j or j < r or i > t or i < b:
while j < r: # 往右
j += 1
L.append(matrix[i][j])
r -= 1
if len(L) == m*n: # 达到边界条件
break
while i < b: # 往下
i += 1
L.append(matrix[i][j])
b -= 1
if len(L) == m*n: # 达到边界条件
break
while j > l: # 往左
j -= 1
L.append(matrix[i][j])
l += 1
if len(L) == m*n: # 达到边界条件
break
while i > t: # 往上
i -= 1
L.append(matrix[i][j])
t += 1
if len(L) == m*n: # 达到边界条件
break
return L