如何解决最低平台
嗨,我正在解决以下问题:
给定到达火车站的所有列车的到达和出发时间。找出火车站所需的最少站台数量,以便没有火车等待。 考虑到所有火车在同一天到达并在同一天离开。一列火车的到达和出发时间永远不会相同,但我们可以让一列火车的到达时间等于另一列火车的出发时间。在任何给定的时间,同一站台不能同时用于一列火车的出发和另一列火车的到达。在这种情况下,我们需要不同的平台,
Input: N = 6
arr = [0900 0940 0950 1100 1500 1800]
dep = [0910 1200 1120 1130 1900 2000]
Output: 3
Explanation:
Minimum 3 platforms are required to
safely arrive and depart all trains.
这是我的代码:
class Node:
def __init__(self,arrival,departure):
self.arrival = int(arrival)
self.departure = int(departure)
def minimumPlatform(n,arr,dep):
s=[Node(arr[i],dep[i]) for i in range(n)]
s = sorted(s,key=lambda x:x.departure)
currentMax=1
maxi = 1
dep = s[0].departure
for j in range(1,n):
i = s[j]
if i.arrival<=dep:
currentMax+=1
maxi = max(currentMax,maxi)
else:
currentMax=1
dep = i.departure
return maxi
我所做的是根据出发地进行排序并检查图形中的最大重叠数(在图形中绘制到达和离开)
gfg 不接受我的回答
我的直觉是否正确?
解决方法
如果你有这样的间隔
A: [ ]
B: [ ]
C: [ ]
D: [ ]
那么正确的最大重叠是{B,C,D}
。当您的代码扫描 C
时,到达是在 A
离开之后,因此 currentMax
重置为 1
,从而有效地将 B
排除在进一步考虑之外。最终结果是您的代码返回 2
而不是 3
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。