重叠的间隔的最大值VALUE

时间:2019-02-12 16:44:02

标签: algorithm sorting

这是该问题的后续问题:

Maximum no of overlaps of all time intervals

这是一个已知的问题,即在给定的开始时间和结束时间对下找到最重叠的间隔。

我了解如何解决此问题。我想知道如何解决这个问题的轻微变化。同样的问题,但不仅仅是获得开始和结束时间,您还可以获得每对的价值。

例如,我们可以说,我们问一个派对,其中每个间隔是到达时间和离开时间,但是现在我们还添加了客人带来的啤酒量。当客人离开时,他将啤酒随身带走。如何找到啤酒的最大重叠数?

我的问题是,当我们遍历时间并仅检查客人何时离开时,我们不知道该客人带给他的啤酒是多少,因为经过时间排序后,我们不知道那位客人是谁与该特定时间有关。

Java或C#解决方案都很好

输入示例-我们得到(开始时间,结束时间,值):

(1,50,3),(3,4,2),(5,40,3)

预期输出-6(因为最大总和为5到40之间的6)

1 个答案:

答案 0 :(得分:3)

为每个客人做两对:

(arrival time; bottles)
(departure time; - bottles)

然后按时间字段和遍历排序列表对所有对进行排序,在每一步中,将第二个字段添加到bottles here中。

您需要的是bottles here的最大值

P.S。请注意,用K啤酒来宾的拜访等同于同时K来宾的拜访(每次喝啤酒)