链接:54. 螺旋矩阵 - 力扣(LeetCode)

关键是每次旋转方向都是顺时针,就可以做一个顺时针方向的模拟数组,来模拟下一步的路径

direction = [[0, 1], [1, 0], [0, -1], [-1, 0]]
要变化方向了就把下标+1%4
 1 class Solution(object):
 2     def spiralOrder(self, matrix):
 3         """
 4         :type matrix: List[List[int]]
 5         :rtype: List[int]
 6         """
 7         m = len(matrix)
 8         n = len(matrix[0])
 9         visit = [[0] * n for _ in range(m)]
10         direction = [[0, 1], [1, 0], [0, -1], [-1, 0]]
11         dir = 0
12         sum = 0
13         i = 0
14         j = 0
15         ni = 0
16         nj = 0
17         res = []
18         while sum < (m * n):
19             visit[i][j] = 1
20             res.append(matrix[i][j])
21             sum += 1
22             ni = i + direction[dir][0]
23             nj = j + direction[dir][1]
24             if ni < m and ni >= 0 and nj < n and nj >= 0 and visit[ni][nj] == 0:
25                 i = ni
26                 j = nj
27             else:
28                 dir = (dir + 1) % 4
29                 i = i + direction[dir][0]
30                 j = j + direction[dir][1]
31         return res

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/961699.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!