任务描述
思路
- 没有好思路,因此代码比较傻
实现代码
class Solution(object):
def spiralOrder(self, matrix):
"""
:type matrix: List[List[int]]
:rtype: List[int]
"""
if not matrix:
return []
turn_right = True
turn_left = False
turn_down = False
turn_up = False
m,n = len(matrix),len(matrix[0])
i = j = 0
a = []
a.append(matrix[0][0])
go_left,go_right,go_up,go_down = 0,0,0,0
while len(a)<(m*n):
while turn_right and j<n-go_right:
j += 1
if j<n-go_right:
a.append(matrix[i][j])
print(matrix[i][j])
else:
go_up += 1
turn_right = False
turn_down = True
j -= 1
while turn_down and i<m-go_down:
i += 1
if i<m-go_down:
a.append(matrix[i][j])
print(matrix[i][j])
else:
go_right += 1
turn_left = True
turn_down = False
i -= 1
while turn_left and j>=go_left:
j -= 1
if j>=go_left:
a.append(matrix[i][j])
# print(j,go_up)
print(matrix[i][j])
else:
turn_up = True
go_down += 1
turn_left = False
j += 1
while turn_up and i>=go_up:
# print('向上')
i -= 1
print(i)
if i>=go_up:
a.append(matrix[i][j])
print(matrix[i][j])
print(i,go_up)
else:
i += 1
turn_right = True
go_left += 1
turn_up = False
print(a)
return a[:m*n]