我面临问题,我需要找到具有共同交叉点的最大数量的范围。但是我找不到任何好的解决方案。
如果我们有这些范围:
<0, 4>
<2, 6>
<4, 6>
因此,在这种情况下,所有集合都有一个共同的交集,它是
<4, 4>
有没有办法在C ++中找到它?
答案 0 :(得分:2)
score
初始化为零。score
。如果元素结束,则递减score
。score
的最大值。示例:
对于输入<0, 4>, <2, 6>, <4, 6>
,有6个事件:
0 begin
4 end
2 begin
6 end
4 begin
6 end
排序安排这样的事件:
0 begin
2 begin
4 begin
4 end
6 end
6 end
然后计算得分:
initial : score = 0
0 begin : score = 1
2 begin : score = 2
4 begin : score = 3
4 end : score = 2
6 end : score = 1
6 end : score = 0
现在您知道答案是3,。