具有公共交集的范围的最大数目
Highest number of ranges that have common intersection
我面临的问题是,我需要找到具有公共交集的最大数量的范围。但我找不到任何好的解决方案。
例如,如果我们有这些范围:
<0, 4>
<2, 6>
<4, 6>
在这种情况下,所有集合都有一个公共交集,它就是
<4, 4>
有没有办法在C++中找到这个??
- 创建一个包含坐标的结构,该坐标位于范围的开头或结尾
- 创建一个结构的数组(向量),让它包含输入范围的所有开始和结束
- 按坐标的升序对数组进行排序。如果他们有相同的坐标,就应该先开始后结束
- 将
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,。
相关文章:
- 找到不大于 A 的最大数的最有效方法,该数可被 B 整除
- C++:最大数组值函数工作不正常
- 在浮点数32中保存浮点数16最大数
- 使用 DP 的非相邻元素的最大数组总和
- 找到第 n 个最大数无限循环C++
- 最大数组大小
- C 最大数组大小
- 如何在GPU内存中获取最大数组大小
- 具有最大数组函数的程序
- 这是在包含非唯一元素的未排序数组中选择第k个最大数的最快算法
- 如何递归地找到最大数组元素的索引
- 递归最大数求和
- 数组上的范围最小查询
- 如何找到数组中的最大数并用c++显示
- 给定一系列整数,提供第k个最大数
- 在任意加长的集合中查找最大数不起作用
- IEEE 754浮点数,1<的最大数是多少?
- 范围最小查询
- 值范围(最小值和最大值)
- 不与V互质的最大数