我有两个这种形式的范围数组:
wanted = {[10, 15], [20, 25]}
cut = {[5, 12], [22, 24]}
wanted由两个元素(范围)组成的数组也是如此-[10, 15]和[20, 25].
这两个数组中的每一个都满足以下条件:
- 它按每个整数范围中的第一个值排序
- 范围永远不会重叠(例如
[10, 15],[15, 25]不可能) - 这也意味着每个范围在数组中都是唯一的(不
[1, 5],,[1, 5]) - 如果一个范围只有一个整数宽,它将显示为
[5, 5](开始和结束相等)
我现在想获得一个范围数组,其中所有范围cut都已从wanted.
result = {[13, 15], [20, 21], [25, 25]}
是否有一些比下面更好/更容易/更快的出色算法?
对于 中的每个元素
wanted,将该元素与一个又一个元素从 from 进行比较,cut直到元素 fromcut结束于元素 from 之上wanted。