螺旋矩阵

螺旋矩阵

1、题目

图1

2、题解

设定边界

  • 当矩阵为空时,直接返回列表
  • 初始化矩阵左、右、上、下四个边界
  • 从左向右、从上向下、从右向左、从下向上四个方向循环打印。

​ 根据边界打印,将元素按顺序添加到列表中;

​ 边界向内收缩1;

​ 判断边界是否相遇,若打印完毕则跳出

  • 返回列表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution:
def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
if not matrix: return []
l, r, t, b, res = 0, len(matrix[0]) - 1, 0, len(matrix) - 1, []
while True:
for i in range(l, r + 1): res.append(matrix[t][i]) # left to right
t += 1
if t > b: break
for i in range(t, b + 1): res.append(matrix[i][r]) # top to bottom
r -= 1
if l > r: break
for i in range(r, l - 1, -1): res.append(matrix[b][i]) # right to left
b -= 1
if t > b: break
for i in range(b, t - 1, -1): res.append(matrix[i][l]) # bottom to top
l += 1
if l > r: break
return res


螺旋矩阵
http://example.com/2024/03/15/螺旋矩阵/
作者
Z Z
发布于
2024年3月15日
许可协议