. - 力扣(LeetCode) 根据题意模拟场景解题 from typing import List class Solution: def latestTimeCatchTheBus(self, buses: List[int], passengers: List[int], capacity: int) -> int: buses.sort() passengers.sort() # 定义通过的人的时间列表 passed = [] for bus in buses: # 定义最后一班车的剩余座位 last_bus_seat = capacity # 模拟上车 while last_bus_seat > 0 and len(passed) < len(passengers) and passengers[len(passed)] <= bus: # 人员上车 passed.append(passengers[len(passed)]) last_bus_seat -= 1 # 当最后一班车的剩余座位大于0,且车上没人或者车上的人的最大时间小于最后一班车的发车时间,我们只要和最后一班车相同的时间去就行了 if last_bus_seat > 0 and (not passed or passed[-1] < buses[-1]): return buses[-1] # 找到比最后一个上车时间小且不与其他人重复的时间即可 for i in range(len(passed) - 1, -1, -1): if passed[i] - 1 > passed[i - 1]: return passed[i] - 1 # 要是都没有,只能最早一个去了 return passed[0] - 1