程序检查我们是否可以在Python的给定列表中接送每个乘客
假设我们有一个称为request_trips的矩阵,其中每行包含[start_x,end_x,num_passengers],并且我们还有一个容量值。现在,每次请求的行程都要求在start_x接送num_passengers的乘客,然后在end_x下车。我们也有一辆具有给定容量的汽车,从位置x=0开始。我们要接载每位乘客,并且只能向右行驶,我们必须检查是否可以接送每个人。
因此,如果输入像跳闸=[[1、25、2],[3、4、3],[5、12、3]]的容量=6,则输出将为True
为了解决这个问题,我们将遵循以下步骤-
事件:=一个新列表
对于旅行中的每组(sx,ex,np),请执行
在事件结束时插入对(sx,np)
在事件结束时插入对(例如,-np)
携带:=0
对于事件列表中的每个对(loc,delta)(按排序顺序),请执行
返回False
携带:=携带+三角洲
如果承载>容量,则
返回True
让我们看下面的实现以更好地理解-
示例
class Solution: def solve(self, trips, capacity): events = [] for sx, ex, np in trips: events.append((sx, np)) events.append((ex, -np)) carrying = 0 for loc, delta in sorted(events): carrying += delta if carrying > capacity: return False return True ob = Solution() trips = [ [1, 25, 2], [3, 4, 3], [5, 12, 3] ] capacity = 6 print(ob.solve(trips, capacity))
输入项
trips = [ [1, 25, 2], [3, 4, 3], [5, 12, 3] ] capacity = 6
输出结果
True