一、题目描述
二、题目分析
我的第一个想法是为每辆车保存 (totalTime, remainTime) 元组,二者分别用于记录完成一次旅途的总时间以及完成当次旅途的剩余时间。使用这两个时间排序所有公交车,序列的首元素即为当次旅途需要选用的车辆。在每次选用一辆车之后更新所有车辆的剩余时间(减去选用车辆的剩余时间)。该算法时间复杂度为 O ( t i m e . l e n g t h ∗ t o t a l T r i p s ) O(time.length * totalTrips) O(time.length∗totalTrips)。显然,这不能满足我们要求。
显然,对 totalTrips 进行步长为1的遍历是不能满足时间要求的。那么如何缩小这个步长呢?很自然我们会想到如果所有车辆都被使用过一次,那么根据旅途时间最长为 t m a x t_{max} tmax的车辆可以计算出在 t m a x t_{max} tmax时间内所完成的总旅途数。这样的步长将会很大。如果总旅途数超过了 totalTrips,我们可以通过将