第k个平台可容纳的最大列车数[关闭]

问题描述 投票:5回答:3

对于给定的k平台,给出到达火车站的N列火车的到达和离开时间,返回我们可以在k平台上容纳的最大火车数量。

k <<< N

到达和离开时间数组

Input:  arr[]  = {9:00,  9:40, 9:50,  11:00, 15:00, 18:00}
        dep[]  = {9:10, 12:00, 11:20, 11:30, 19:00, 20:00}

这个问题是在一些采访中问我的,那么什么是最好的算法呢?这个问题比这个问题稍作修改。

我对此问题尝试了贪婪算法,但它不适用于所有测试用例。例如:对于k = 2我们有时间间隔

arr[]={1:00,1:30,2:00}
dept[]={1:40,2:10,3:30}

'删除{1:30和2:10间隔,我们可以完成k = 2的任务{1:00-1:40}和{2:00-3:30},因为这段时间之间没有其他火车出现]

给出给定的k个平台,给出到达火车站的N列火车的到达和离开时间,返回我们可以容纳在k个平台上的最大火车数量。 k <<< N ...

arrays algorithm data-structures dynamic-programming greedy
3个回答
1
投票

在我看来(我对此没有严格的证明)贪婪算法应该起作用:


1
投票

我想我以前误解了这个问题。如果我们的站台数量有限,我现在认为我们正在被要求取消最少数量的火车,这样火车时刻表就不会压倒平台。


-1
投票
如果我正确理解了问题,我相信可以通过使用大小为stackk来完成,该大小将包含当前平台上的火车。对于每列火车(按发车时间排序):

while current.ArrivalTime > stack.Last.DepartureTime: remove the top element (train) from the stack push the current train IF there is room, else ignore it answer = max(answer, stack.Size)

© www.soinside.com 2019 - 2024. All rights reserved.