当青训营遇上码上掘金
选择的题目为主题三,内容如下:
主题 3:寻友之旅
小青要找小码去玩,他们的家在一条直线上,当前小青在地点 N ,小码在地点 K (0≤N , K≤100 000),并且小码在自己家原地不动等待小青。小青有两种交通方式可选:步行和公交。
步行:小青可以在一分钟内从任意节点 X 移动到节点 X-1 或 X+1
公交:小青可以在一分钟内从任意节点 X 移动到节点 2×X (公交不可以向后走)
请帮助小青通知小码,小青最快到达时间是多久?
输入: 两个整数 N 和 K
输出: 小青到小码家所需的最短时间(以分钟为单位)
题目解析
首先,我们要知道的是公交要比步行快的多,所以我们要将大部分的路程用公交完成
分为两种情况:
- 小青位置要更远(N>K)
由于公交车不可以往后走,所以小青去找小码时只能向后步行前去,所花时间MinTime=N-K。
2.小码位置要更远(N<=K)
这个时候就要判断K是不是偶数:
如果是偶数,那么直接让K除以2,当它不是偶数的时候,+1继续除2,直到N=K位置,结束判断
代码如下:
测试范例:
如上,设N=3,K=13,正常情况应该是小青先坐公交从3->6->12,然后步行+1,MinTime=4。