我需要把重叠的数字区域合并成一个区域。所以我有一个列表,其中有一些子列表,比如:
[[83,77],[103,97],[82,76],[101,95],[78,72],[97,91],[72,66],[89,83],[63,57],[78,72],[53,47],[65,59],[41,35],[50,44],[28,22],[34,28],[14,8],[16,10]]
所以从83到77是重叠的82到76,会变成76到83。如果任何其他范围与此范围重叠,则此范围的最小值为最大值,如果没有其他范围重叠,则该方法应转到列表中的下一个范围,并尝试将其与重叠合并。你知道吗
我认为这是有道理的。你知道吗
使用间隔树https://en.wikipedia.org/wiki/Interval_tree
python中有一个可用的实现:
注意,我必须让你的观点是
(start, end)
,而不是(end, start)
。你知道吗合并到
并且
strict=False
允许合并触摸间隔如果我理解正确,你可以这样做:
这将提供:
有一种天真的方法:
输出:
相关问题 更多 >
编程相关推荐