59.螺旋矩阵II
第一次自己一遍过做出了最优解,原理就是模拟填充的过程,先从左到右再上到下,右到左,下到上
唯一需要注意的是:
- 需要设定边界值,碰到边界值即停止的同时转向
- 我的方法会将坐标溢出一个位置,故在转向的时候会多加一行代码调整回来
![]()
代码随想录的不同点(https://gitee.com/programmercarl/leetcode-master/blob/master/problems/0059.螺旋矩阵II.md):
![]()
我的代码:
vertical:横向的边界值,相当于横向填充的时候会遇到的墙壁
transverse:纵向的边界值,相当于纵向填充的时候会遇到的墙壁
class Solution:
def generateMatrix(self, n: int) -> List[List[int]]:
vertical = 0
transverse = 0
ctl = 0
l = [[0 for i in range(n)] for j in range(n)]
count = 0
x = 0
y = 0
i = 1
while i <= n ** 2:
if ctl == 0:
if count < n - vertical:
l[y][x] = i
x += 1
else:
count = 0
x -= 1
y += 1
ctl = 1
transverse += 1
continue
if ctl == 1:
if count < n - transverse:
l[y][x] = i
y += 1
else:
count = 0
x -= 1
y -= 1
ctl = 2
vertical += 1
continue
if ctl == 2:
if count < n - vertical:
l[y][x] = i
x -= 1
else:
count = 0
x += 1
y -= 1
ctl = 3
transverse += 1
continue
if ctl == 3:
if count < n - transverse:
l[y][x] = i
y -= 1
else:
count = 0
x += 1
y += 1
ctl = 0
vertical += 1
continue
count += 1
i += 1
return l


浙公网安备 33010602011771号