我有一个代表间隔的类。该类有两个可比较类型的属性“start”和“end”。现在我正在寻找一种有效的算法来获取一组此类间隔的并集。
提前致谢。
按其中一个术语(例如,开始)对它们进行排序,然后在浏览列表时检查与其(右侧)邻居的重叠。
class tp:
def __repr__(self):
return "(%d,%d)" % (self.start, self.end)
def __init__(self, start, end):
self.start = start
self.end = end
s = [tp(5, 10), tp(7, 8), tp(0, 5)]
s.sort(key=lambda self: self.start)
y = [s[0]]
for x in s[1:]:
if y[-1].end < x.start:
y.append(x)
elif y[-1].end == x.start:
y[-1].end = x.end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)