程序检查我们是否可以在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