比较多个范围和返回非重叠集

时间:2016-05-13 19:28:38

标签: python python-3.x

如果我有数字范围,我需要返回彼此不重叠的集合例如,这是一组数字:

1,4
0,3
4,7
0,4

我需要回复:

0,3
4,7

更大数据集的示例:

0,1
0,2
2,5
4,8
3,7
8,11
8,9
9,11

我需要回复:

0,2 
3,7 
8,11

需要考虑如果较小的集合在另一个集合中并且应该被丢弃的情况。使用前一组,

0,1
0,2
3,7

由于0,1包含在0,2集0,1之内应该被丢弃。

任何帮助将不胜感激。非常感谢。

1 个答案:

答案 0 :(得分:1)

如果您的目标是找到最大的非重叠集合,则应检查Interval scheduling问题,尤其是使用贪婪算法的解决方案。如果性能不重要,您可以尝试使用python set union或子集,并相互比较集。

set(range(0, 4)).union(set(range(0, 1)))