每日一题 1654. 到家的最少跳跃次数 难度:中等
花了3个小时,始终过不去测试用例121
后看题解,感觉思路也差不多,终放弃,改日有机会做到再尝试
补充第二天完成的代码:
class Solution:
def minimumJumps(self, forbidden: List[int], a: int, b: int, x: int) -> int:
up = 6000
vis = {0: 0}
res = 0
forbiddenSet = set(forbidden)
isv = set()
while len(vis) > 0 and vis.get(x, -1) == -1:
t = {}
for i in vis.keys():
if i in forbiddenSet:
continue
if vis[i] == 1:
if i - b > 0 and i - b not in isv:
t[i - b] = 2
isv.add(i - b)
if i + a >= up:
break
if i + a not in isv:
t[i + a] = 1
isv.add(i + a)
res += 1
vis = t.copy()
return res if vis.get(x, -1) != -1 else -1