当青训营遇上码上掘金
题目
小青要找小码去玩,他们的家在一条直线上,当前小青在地点 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
- 直接返回结果0
-
N<K 这里又分为两种情况
- 小青坐公交到小码后面 然后往回走
- 小青坐公交到小码前面 继续往前走
只要把两种情况全部计算出来,取得最小值即可
计算过程只需要循环判断: 小青坐了一站公交后是否在小码后面
并且同时记录下坐公交站数
与最后的相差距离进行计算
最后即可得到我们所需要的答案
-
N>K
- 这种情况可以将N和K进行反转,就与第二种情况相同了
代码
(本地编译器跑着没啥问题,不太懂这个码上掘金是怎么用的)
后记
这种问题应该有更加优质的解法,不过我还是个小菜鸡,还需要继续努力学习,这是在掘金发的第一篇(算是题解?)
部分引用
作者:青训营官方账号
链接:juejin.cn/post/718775…
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。