Python程序检查是否可以接送给定列表中的所有乘客
假设我们有一个名为requested_trips的矩阵,其中每一行包含[start_x, end_x, num_passengers],我们还有一个capacity值。现在每个请求的行程都要求在start_x接送num_passengers名乘客,并在end_x放下他们。我们还有一辆汽车,其容量为给定值,并从位置x = 0开始。我们希望接送所有乘客,并且只能向右移动,我们需要检查是否可以接送所有人。
因此,如果输入类似于trips = [[1, 25, 2], [3, 4, 3],[5, 12, 3]] capacity = 6,则输出将为True
为了解决这个问题,我们将遵循以下步骤:
events := 一个新的列表
对于trips中的每个集合(sx, ex, np),执行以下操作
将(sx, np)对插入到events的末尾
将(ex, -np)对插入到events的末尾
carrying := 0
对于events列表中的每个(loc, delta)对(按排序顺序),执行以下操作
carrying := carrying + delta
如果carrying > capacity,则
返回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
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP