如何找到区间列表的交集?
How to find the intersection of list of intervals?
我有这样的间隔列表:
[[-5, 10], [-3, 5], [-53.7228, 3.72281], [-3, 4], [-6.32456, 6.32456]]
我需要找到所有这些区间的交集
答案是
[-3,3.72281]
也许有人知道怎么做?
对于这个简单的例子,您似乎想要第一个值的最大值和第二个值的最小值。
l = [[-5, 10], [-3, 5], [-53.7228, 3.72281], [-3, 4], [-6.32456, 6.32456]]
v1 = max([pair[0] for pair in l]) # -3
v2 = min([pair[1] for pair in l]) # 3.72281
assert v1 < v2
我不会帮你解决问题,但是思路很简单:
将列表的第一个元素作为结果。然后从列表中的第二个位置迭代到最后并将结果重新分配给结果和当前元素的交集。
你的终点就是你的路口
我有这样的间隔列表:
[[-5, 10], [-3, 5], [-53.7228, 3.72281], [-3, 4], [-6.32456, 6.32456]]
我需要找到所有这些区间的交集
答案是
[-3,3.72281]
也许有人知道怎么做?
对于这个简单的例子,您似乎想要第一个值的最大值和第二个值的最小值。
l = [[-5, 10], [-3, 5], [-53.7228, 3.72281], [-3, 4], [-6.32456, 6.32456]]
v1 = max([pair[0] for pair in l]) # -3
v2 = min([pair[1] for pair in l]) # 3.72281
assert v1 < v2
我不会帮你解决问题,但是思路很简单:
将列表的第一个元素作为结果。然后从列表中的第二个位置迭代到最后并将结果重新分配给结果和当前元素的交集。
你的终点就是你的路口