【问题标题】:algorithm for : how to separate sets with common range into each distinct range算法:如何将具有共同范围的集合分成每个不同的范围
【发布时间】:2012-08-10 12:22:52
【问题描述】:

我已经尝试了这个问题很长一段时间,但找不到一个好的解决方案:

假设我们有整数范围,例如

 100 - 1000
 200 - 300
 500 - 600
 550 - 575
 800 - 1200
 1100 - 2300

所以我想将这些混合范围放入每个单独的不同范围

 100 - 199
 200 - 300
 301 - 499
 500 - 549
 550 - 575
 575 - 600
 800 - 1099
 1100 - 1200
 1201 - 2300

是否有一些标准算法?

谢谢

【问题讨论】:

标签: algorithm math integer range


【解决方案1】:

将每个数字放入一个数组中,进行排序和重复数据删除。在 C++ 中,将它们全部插入 std::set<int> 具有预期的效果。在 Python 中,你可以写成sorted(set(x for (a, b) in ranges for x in (a, b)))

在结果集合中,相邻对表示不重叠的范围。

请务必注意,此技术依赖于 [a, b) 约定(即,包含在左侧;排除在右侧)来描述范围。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    • 2013-09-14
    • 2013-11-15
    • 1970-01-01
    • 2021-10-03
    • 2020-02-18
    • 1970-01-01
    相关资源
    最近更新 更多