当青训营遇上码上掘金
今天又是小青和小码约会的日子,所以小青选择下午出行去小码家玩,小青想到可以和小码共度美好的一天就迫不及待想要马上见到小码,因此他为了能以最快的速度见到小青,立马从口袋中掏出了笔记本电脑、纸和笔快速的计算了最短的距离,顺手写了一个简单的程序并给出最快到达的方案,现在情况是,他们的家在一条直线上,当前小青在地点 N ,小码在地点 K (0≤N , K≤100 000),并且小码在自己家原地不动等待小青。小青有两种交通方式可选:步行和公交。
步行:小青可以在一分钟内从任意节点 X 移动到节点 X-1 或 X+1
公交:小青可以在一分钟内从任意节点 X 移动到节点 2×X (公交不可以向后走)
请帮助小青通知小码,小青最快到达时间是多久?
输入: 两个整数 N 和 K
输出: 小青到小码家所需的最短时间(以分钟为单位)
思路: 由题可以想象小青和小码在一条直线上,这就大体可以分为小青在小码前面(N>K)和小青在小码后面(N<K)
1.N>K时 这个时候小青在小码前面,而公交不能往后走所以只能步行时长就为N-K
2.N<K时 这个时候小青在小码后面,又可细分为只用公交和公交步行混用,不考虑纯步行是因为肯定比这两种情况的时间长。而题目可以注意到如果纯公交车(小青高兴坏了),那么N-K必然是个偶数;而需要混用的就是个奇数
2.1纯公交车 这个时候就比较简单,将K/N取整再减去1即可(因为最后一步已经到达小青家就不是K/N了)
2.2公车步行混用 这个时候就得思考要在小码家前下车往回走还是小码家后往前走,这时候只要把在前面left和后面right的时间算出来做比较即可
作者:青训营官方账号
链接:juejin.cn/post/718775…
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。