题目
解法1:bfs
两条原则:
- 永远考虑按照当前速度往下走这个选项
- 当现在的运动方向在远离target的时候改变方向
class Solution:
def racecar(self, target: int) -> int:
q = collections.deque()
# steps, position,speed
q.append([0,0,1])
while q:
steps,pos,speed = q.popleft()
if pos == target:
return steps
q.append([steps+1,pos+speed,speed*2])
if (pos + speed > target and speed > 0) or (pos + speed < target and speed < 0):
q.append([steps+1,pos,-speed/abs(speed)])
参考:
https://leetcode.com/problems/race-car/discuss/762584/Python-C%2B%2B-3-Simple-Steps-(BFS)
解法2:dp
不会做。。。