根据题意模拟场景解题
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