任何给定时间的最大带宽

时间:2017-06-21 07:25:07

标签: algorithm data-structures

我们输入了startTime,endTime和带宽消耗。 喜欢

1234  5678   12
2345  6789   10
7900  8790   20
6790  8123   8

我们必须计算消耗的最大带宽。与上面一样,输入集{7900 8790}{6790 8123}将为28,因为这些集合具有交集。

解决问题的最佳方法是什么。

2 个答案:

答案 0 :(得分:2)

成对

{t; v} 
where 
t=time
v = +bandwidth for start of interval or 
    -bandwidth for end of interval

按时间排序这些对的列表(如果是平局+第一个)。

1234; 12
5678; -12
2345; 10
6789;  -10
7900; 20
8790;- 20
6790; 8
8123; -8

浏览此列表,将v添加到当前带宽值。达到最大值是您需要的

1234; 12     : 12
2345; 10     : 22
5678; -12    : 10
6789;  -10   : 0
6790; 8      : 8
7900; 20     : 28
8123; -8     : 20
8790;- 20    : 0

答案 1 :(得分:0)

最简单的方法应该类似于以下伪代码,即td。另外我认为你的例子答案应该是28,因为[6790,8123]和[7900,8790]也有交集。

O(n lg n)