我有两个这种形式的范围数组:
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
。