假设我有一个数量范围的数组:
[{min=1, max=500}, {min=2, max=1000}, ...]
什么是验证范围不重叠的最有效方法(上述内容将无法通过验证)?
假设我有一个数量范围的数组:
[{min=1, max=500}, {min=2, max=1000}, ...]
def validate(listoftuples):
rightedge = -10000000000000000 # some kind of minus infinity
listoftuples.sort()
valid = True
for l, r in listoftuples:
if l >= rightedge:
rightedge = r
else:
valid=False
break
return valid
validate([(1, 500), (2, 1000)]
>>> False
validate([(1, 2), (2, 1000)])
>>> True
这两个运行时间都是 O(N log N)
。我不确定是否有更好的方法。