当青训营遇上码上掘金
创作主题主题
3:寻友之旅
小青要找小码去玩,他们的家在一条直线上,当前小青在地点 N ,小码在地点 K (0≤N , K≤100 000),并且小码在自己家原地不动等待小青。小青有两种交通方式可选:步行和公交。 步行:小青可以在一分钟内从任意节点 X 移动到节点 X-1 或 X+1 公交:小青可以在一分钟内从任意节点 X 移动到节点 2×X (公交不可以向后走) 请帮助小青通知小码,小青最快到达时间是多久? 输入: 两个整数 N 和 K 输出: 小青到小码家所需的最短时间(以分钟为单位)
代码
内容逻辑介绍
由题意可知,先比较N和K的大小,若N大于或者等于K,则不能使用公交车,小青使用步行的方式找到小码,时间为N-K分钟 如果N的两倍小于K,那么小青可以选择乘坐公交会或者步行的方式与小码见面。如果小青乘坐公交一一分钟后,仍然没有追上小码所在的位置,那么我们可以选择乘坐公交一分钟,时间计时器加上一分钟。 如果起点为N=0,需要小青先步行一步,耗费一分钟的时间,否则使用公交车会导致原地踏步。 如果说N的两倍大于K,那么我们需要比较,当达到2N位置再往回走和从N位置直接步行到K位置的时间哪个比较短一些,如果从2N位置再往回走比较节约时间,则选择乘坐公交车到位置2N,再往回走。如果是N位置直接步行到K位置的时间比较短一些,那么直接步行,直到到达K位置,与小码回合。