题目
车上最初有
capacity
个空座位。车 只能 向一个方向行驶(也就是说,不允许掉头或改变方向)给定整数
capacity
和一个数组trips
,trip[i] = [numPassengersi, fromi, toi]
表示第i
次旅行有numPassengersi
乘客,接他们和放他们的位置分别是fromi
和toi
。这些位置是从汽车的初始位置向东的公里数。当且仅当你可以在所有给定的行程中接送所有乘客时,返回
true
,否则请返回false
。
解题
"""
时间复杂度为 O(n + m),其中 n 是行程数量,m 是最大位置值(在这里为 1000)。
"""
def carPooling(trips, capacity):
# 初始化差分数组
diff = [0] * 1001
# 处理每个旅行记录
for numPassengers, fromi, toi in trips:
diff[fromi] += numPassengers
diff[toi] -= numPassengers
# 检查车在每个位置的载客量是否超出 capacity
current_passengers = 0
for passengers in diff:
current_passengers += passengers
if current_passengers > capacity:
return False
return True
trips = [[2, 1, 5], [3, 3, 7]]
capacity = 4
print(carPooling(trips, capacity)) # False