寻友之旅-BFS

67 阅读1分钟

当青训营遇上码上掘金

寻友之旅

当青训营遇上码上掘金 主题三 寻友之旅

题目:小青要找小码去玩,他们的家在一条直线上,当前小青在地点 N ,小码在地点 K (0≤N , K≤100 000),并且小码在自己家原地不动等待小青。小青有两种交通方式可选:步行和公交。
步行:小青可以在一分钟内从任意节点 X 移动到节点 X-1 或 X+1
公交:小青可以在一分钟内从任意节点 X 移动到节点 2×X (公交不可以向后走)

请帮助小青通知小码,小青最快到达时间是多久?
输入: 两个整数 N 和 K
输出: 小青到小码家所需的最短时间(以分钟为单位)

思路

求最短的时间,优先考虑宽度优先搜索:

  1. 使用一个队列来保存位置节点和所需时间并对其进行BFS遍历
  2. 判断向左/向右步行和坐公交的三种情况将其入队,当队列节点遍历到K时输出当前所需时间,即为最短。