对于给定的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 ...
在我看来(我对此没有严格的证明)贪婪算法应该起作用:
我想我以前误解了这个问题。如果我们的站台数量有限,我现在认为我们正在被要求取消最少数量的火车,这样火车时刻表就不会压倒平台。
k
来完成,该大小将包含当前平台上的火车。对于每列火车(按发车时间排序):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)