关键点
以时间点的角度 解决这道题
在有乘客上下车时,车上的人才会变化,才会有false的可能
因此我们应该把每个时间点总结成 增加了多少人,减少了多少人
例子
[[2,1,5],[3,5,7]] capacity = 3
1时间点 :上车2人
5时间点:下车2人,上车3人
7时间点:下车3人
然后拿着capacity = 3 顺序过时间点保证每个时间点 不超过容量 即可
代码
def carPooling(trips, capacity):
"""
:type trips: List[List[int]]
:type capacity: int
:rtype: bool
"""
def zero():
return 0
c=collections.defaultdict(zero)
for trip in trips:
num=trip[0]
time1=trip[1]
time2=trip[2]
c[time1]+=num
c[time2]-=num
for key in sorted(c.keys()):
capacity-=c[key]
if capacity < 0:
return False
return True