当青训营遇上码上掘金,会碰撞出不一样的火花。
前言
很幸运能够参与字节的青训营,和各位大佬一起学习做项目,让我了解到码上掘金这个平台。不用搭建相应的环境变量直接就可以去使用,fork和共享的对应的功能感觉很像是GitHub。在写代码的开始时搭配对应的环就劝退了很多人,掘金平台的优势就在于这里,直接编译运行,美中不足的是无法通过对应的输入来给出输出的操作,加上这个功能就更完美了。
题目如下
小青要找小码去玩,他们的家在一条直线上,当前小青在地点 N ,小码在地点 K (0≤N , K≤100 000),并且小码在自己家原地不动等待小青。小青有两种交通方式可选:步行和公交。
步行:小青可以在一分钟内从任意节点 X 移动到节点 X-1 或 X+1
公交:小青可以在一分钟内从任意节点 X 移动到节点 2×X (公交不可以向后走)
请帮助小青通知小码,小青最快到达时间是多久?
输入: 两个整数 N 和 K
输出: 小青到小码家所需的最短时间(以分钟为单位)
相关代码如下
思路分析
作为代码的初学者,目前只能想到这样的这样的思路,希望能够得到大佬的指正
1.定义N,K两个int变量,判断N是否为0,为0的话就变成1,对应分钟(time)+1
2.对N进行N* 2的循环直至大于K为止
3.进行判断N/2-K和N-K的绝对值大小(因为公交车不能往反方向走),如果前者更小则time-1
4.time加上对应的绝对值即可
最终输出对应的分钟,代码的时间复杂度为O(logn)
(码上掘金暂不支持对应输入的操作,所以代码中的输入部分进行了注释)