【问题标题】:Minimum platforms最低平台
【发布时间】:2021-04-28 09:07:42
【问题描述】:

您好,我正在解决以下问题:

给定到达火车站的所有火车的到达和出发时间。找出火车站所需的最少站台数量,以便没有火车一直在等待。 考虑所有火车在同一天到达并在同一天离开。火车的到达和出发时间永远不会相同,但我们可以让一列火车的到达时间等于另一辆火车的出发时间。在任何给定的时间点,同一站台不能同时用于一列火车的出发和另一列火车的到达。在这种情况下,我们需要不同的平台,

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 不接受我的回答

我的直觉是否正确?

【问题讨论】:

  • 如果您需要代码方面的帮助,请将其设为minimal reproducible example - 任何人都应该能够将您问题中的代码粘贴到文件中,然后无需添加任何内容运行它看到和你一样的问题。是的,您需要包括例如进口和显示问题的最少数据。你知道你的代码在 gfg 中测试的数据吗?

标签: python algorithm sorting greedy


【解决方案1】:

如果你有这样的间隔

A: [ ]
B:  [   ]
C:    [  ]
D:     [  ]

那么正确的最大重叠是{B, C, D}。当您的代码扫描C 时,到达是在A 离开之后,因此currentMax 重置为1,有效地丢弃了B,不再考虑。最终结果是您的代码返回 2 而不是 3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    相关资源
    最近更新 更多