当青训营遇上码上掘金
在这个寒假,通过字节跳动青训营后端专场的考试,很荣幸参加了字节跳动第五届青训营。在1月12日,我参加了字节跳动青训营的开营班会,听到了几位老师的讲解,收获到了许多。
题目:
小青要找小码去玩,他们的家在一条直线上,当前小青在地点 N ,小码在地点 K (0≤N , K≤100 000),并且小码在自己家原地不动等待小青。小青有两种交通方式可选:步行和公交。
步行:小青可以在一分钟内从任意节点 X 移动到节点 X-1 或 X+1
公交:小青可以在一分钟内从任意节点 X 移动到节点 2×X (公交不可以向后走)
请帮助小青通知小码,小青最快到达时间是多久?
输入: 两个整数 N 和 K
输出: 小青到小码家所需的最短时间(以分钟为单位)
分析:
- 要使得小青最快的到达时间,则首先需要考虑交通方式的速度,定义两个double类型变量walkSpeed(步行速度)和busSpeed(公交车速度).
- 接下来需要考虑的是两个地点之间的距离,定义一个double类型的变量distance,用于表示两个地点之间的距离.
- 在本题中,由于公交不可以向后走,还需要考虑N与k的位置,判断N与K位置的前后,从而进行不同的计算.
- 因为在本题中,无论是步行还是公交,他们都是匀速前进,所以可以利用 时间=路程/速度 来计算.
- 整个代码并不复杂,主要是由时间=路程/速度来计算,代码十分的简单,最重要的一点也是需要考虑题目中所说的公交车不可以向后走等相关问题,解决此类问题需要分情况讨论