我提供了M个数组的N个元素的形式[L,R]段。我需要改变这些段,使得所有段都具有成对不同的左端。
示例:假设我们在数组中有5个元素,我们有4个段:[1,2],[1,3],[2,4]和[4,5]然后将所有左端成对不相交我们有[1,2],[3,3],[2,4]和[4,5]。这里所有的段都有不同的左端
答案 0 :(得分:0)
让我们看看我是否得到了这个。我建议
在Python中它看起来像这样:
def fit_intervals(datalist):
d1 = sorted(datalist, key=lambda x : x[1])
taken = set()
def find_next_free(x):
while x in taken:
x = x + 1
taken.add(x)
return x
for interval in d1:
interval[0] = find_next_free( interval[0] )
data = [ [4,5], [1,9], [1,2], [1,3], [2,4] ]
fit_intervals(data)
print(data)
输出:[[4,5],[5,9],[1,2],[2,3],[3,4]]
此函数find_next_free
目前使用简单的线性算法,如果有必要,这肯定可以改进。