818. Race Car
https://leetcode.com/problems/race-car/submissions/
Last updated
Was this helpful?
https://leetcode.com/problems/race-car/submissions/
Last updated
Was this helpful?
初始位置为0,速度为1,每步可以速度*2, 或者调头并把速度置为1,问最后到target所需最少步数。最小步数问题用BFS或DP。BFS需要做一些剪枝,比如visited只存speed为1或-1的key = pos_speed,虽然会重复走,但会大规模减少visited的size,从而降低检索时间;还有当距离为target两倍时,终止继续遍历。DP则把对每个距离i, 遍历所有可能性,主要是两种: 1. 加速到j, (调两次头)速度重置回1,再加速到k位置,对剩下的i - (j-k)距离用子问题求解; 2. 一直加速到刚好超过i的位置,然后回头到i。看上去k的那个循环仿佛是多余的,但其实是需要的,在对j做循环时不能直接用dp[i - j],原因我目前也不知道。
答案参考了。