给定列车时刻表所需的最小平台数量

时间:2018-05-21 14:37:54

标签: arrays algorithm data-structures greedy

考虑到达火车站的所有列车的到达和离开时间,找到火车站所需的最小平台数,以便没有火车等待。我们给出了两个阵列,代表停靠的列车的到达和离开时间。

示例:

输入1:

arr[] = {904, 946, 952, 1100, 1508, 1806} dep[] = {915, 1202, 1128, 1135, 1900, 2001}

输出1:3

一次最多有三列火车 (在1100到1128之间)

输入2:

arr[] = {2200, 2300} dep[] = {200, 300}

输出2:2

一次最多有两列火车 (2300至200之间)

输入3:

arr[] = {2200, 2300, 0,} dep[] = {300, 300, 300}

输出3:3

一次最多有三列火车 (介于0到300之间)

我可以从geeksforgeeks找到O(nLogn)复杂度的解决方案,我们能否在O(n)时间复杂度下解决它?

计划范围在此处固定在0到2399之间,并且列车出发时间表可以是第二天意味着出发时间可以小于到达时间,例如到达2300并离开200.

我们可以假设没有火车在平台上停留超过24小时。

1 个答案:

答案 0 :(得分:3)

由于我们的到达时间和出发时间在1到2400或0到2399之间,我们可以使用Redix排序对时间间隔进行排序,因为我们只需要使用计数排序四次,因此排序到达和离开的复杂性将为4 * n - >上)。然后我们可以使用两个排序数组的合并来查找重叠。这将花费n + n - >上)。 所以解决这个问题的时间复杂度是O(n)。

SET XACT_ABORT ON

}