Leetcode 836 Solution
This article provides solution to leetcode question 836 (race-car)
Access this page by simply typing in "lcs 836" in your browser address bar if you have bunnylol configured.
Leetcode Question Link
https://leetcode.com/problems/race-car
Solution
class Solution:
def racecar(self, target: int) -> int:
q = collections.deque()
visited = set()
q.append((0, 1))
visited.add((0, 1))
ans = 0
while True:
s = len(q)
for _ in range(s):
pos, speed = q.popleft()
if pos == target:
return ans
pos1, speed1 = pos + speed, 2 * speed
if (pos1, speed1) not in visited and max(abs(pos1), abs(speed1)) <= 2 * target:
q.append((pos1, speed1))
visited.add((pos1, speed1))
if speed > 0:
pos2, speed2 = pos, -1
else:
pos2, speed2 = pos, 1
if (pos2, speed2) not in visited:
q.append((pos2, speed2))
visited.add((pos2, speed2))
ans += 1
return ans