爪哇2博客
爪哇2博客

火车站所需的最少平台数量

如果您想练习数据结构和算法程序,可以通过 数据结构和算法面试题.

问题:

给出到达特定车站的火车的到达和离开时间。您需要找到在任何时间点容纳火车所需的最少平台数目。
例如:

1
2
3
4
5
 
到达[] = {1:00, 1:40, 1:50, 2:00, 2:15, 4:00}
离开[] = {1:10, 3:00, 2:20, 2:30, 3:15, 6:00}
没有. 平台 需要 以上 情景 = 4
 

请注意,到达时间按时间顺序排列。

解决方案:

如果您注意到我们需要借助到达和离开时间来查找可以在车站上行驶的火车的最大数量。

解决方案1:

您可以遍历所有时间间隔并检查有多少其他时间间隔与之重叠,但这将需要o(N ^ 2)时间复杂度。

 Solution 2:

我们将使用非常类似于的逻辑 合并排序.

  • 对到达数组(arr)和离开数组(dep)进行排序。
  • 比较到达和离开数组中的当前元素,并在两者之间选择较小的元素。
  • 如果元素从到达数组中拾取,则增加platform_needed。
  • 如果元素是从出发数组中取出的,则需要减少platform_need。
  • 执行上述步骤时,我们需要为platform_needed达到的最大值的跟踪计数。
  • 最后,我们将返回达到platform_needed的最大值。
时间复杂度:O(NLogN)
下图将使您更好地理解以上代码:

火车站所需平台最少的Java程序

火车平台主要.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
组织.Arpit.爪哇2blog;
 
进口 爪哇.实用程序.数组;
 
上市 火车平台主要 {
    上市 静态的 虚空 主要( args[])
    {
        // rr [] = {1:00,1:40,1:50,2:00,2:15,4:00}
        // 深度 [] = {1:10,3:00,2:20,2:30,3:15,6:00}
 
        整型 rr[] = {100, 140, 150, 200, 215, 400};
        整型 深度[] = {110, 300, 210, 230,315, 600};
        系统..打印(“所需的最少平台:”+findPlatformsRequiredForStation(rr,深度,6));
    }
 
    静态的 整型 findPlatformsRequiredForStation(整型 rr[], 整型 深度[], 整型 n)
    {
        整型 platform_needed = 0, maxPlatforms = 0;
        数组.分类(rr);
        数组.分类(深度);
        整型 i = 0, j = 0;
 
        //类似于合并排序中的合并
         (i < n && j < n)
        {
            如果 (rr[i] < 深度[j])
            {
                platform_needed++;
                i++;
                如果 (platform_needed > maxPlatforms)
                    maxPlatforms = platform_needed;
            }
            其他
            {
                platform_needed-;
                j++;
            }
        }
        返回 maxPlatforms;
    }
}
 

当您运行上述程序时,将获得以下输出:

1
2
3
 
最低要求 平台 需要:4
 


导入联系人

您可能还喜欢:

分享这个

作者

关注作者

相关文章

  • 3月28日

    对0、1和2的数组进行排序

    如果您想练习数据结构和算法程序,可以阅读100多种数据结构和算法程序。在这篇文章中,我们将看到如何对0、1和2s的数组进行排序。我们已经看到了有关对数组中的0s和1s进行排序的文章。问题给定一个包含零的数组,[…]

  • 3月04

    通过跳转检查是否有可能到达给定数组的末尾

    如果您想练习数据结构和算法程序,可以阅读100多种数据结构和算法程序。问题给定一个具有正整数作为元素的数组,该数组指示可以从数组中任何位置进行跳转的最大长度。检查是否可以[…]

  • 2月17日

    检查数组元素是否连续

    如果您想练习数据结构和算法程序,可以阅读100多种数据结构和算法程序。在这篇文章中,我们将看到如何检查数组元素是否连续。问题给定一个数组,我们需要检查数组是否包含连续的元素。例如:输入:array [] = {5,3,4,[…]

  • 11月1日

    在数组中找到局部最小值

    如果您想练习数据结构和算法程序,可以阅读100多种数据结构和算法程序。在这篇文章中,我们将看到如何在数组中找到局部最小值。问题如果一个元素小于其相邻元素,则它是局部最小值。 整型 [] rr = {10,5,3,[…]

  • 10月22日

    爪哇中的滑动窗口最大值

    在这篇文章中,我们将看到有关Java问题中滑动窗口最大值的问题给定一个整数数组和一个整数k,请从所有大小为K的连续子数组中找到max的元素。例如:Input:int [] rr = {2 ,6,-1,2,4,1,-6,5} 整型 k = 3输出:[[]的每个子数组分别为6,6,4,4,4,5,5…]

  • 10月20日

    计算排序数组中每个元素的出现次数(或频率)

    如果您想练习数据结构和算法程序,可以阅读100多种数据结构和算法程序。在这篇文章中,我们将看到如何计算已排序数组中每个元素的出现次数(或出现频率)问题给定一个包含重复项的整数排序数组。找出每个[…]

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

订阅我们的新闻

获取质量教程到您的收件箱。现在订阅。


成为朋友

©2020 爪哇2博客