Arrays 验证数量范围数组最有效的方法是什么?

Arrays 验证数量范围数组最有效的方法是什么?,arrays,validation,loops,numbers,range,Arrays,Validation,Loops,Numbers,Range,假设我有一个数量范围数组: [{min=1, max=500}, {min=2, max=1000}, ...] 验证范围不重叠的最有效方法是什么(上述方法将无法验证)?一个明显的方法是使用间隔树并逐个插入项目。那么检查就很简单了 另一种方法将更直接。您可以按字典顺序对数组进行排序,并保留最左侧的可用起始点。当一个新的间隔出现时,它必须在这一点之后开始(我们不介意间隙,因为数组已排序,间隙将不再被访问) 这两个都在O(N log N)time中运行。我不确定是否可以做得更好。非常好的解决方案。

假设我有一个数量范围数组:

[{min=1, max=500}, {min=2, max=1000}, ...]

验证范围不重叠的最有效方法是什么(上述方法将无法验证)?

一个明显的方法是使用间隔树并逐个插入项目。那么检查就很简单了

另一种方法将更直接。您可以按字典顺序对数组进行排序,并保留最左侧的可用起始点。当一个新的间隔出现时,它必须在这一点之后开始(我们不介意间隙,因为数组已排序,间隙将不再被访问)


这两个都在
O(N log N)
time中运行。我不确定是否可以做得更好。

非常好的解决方案。非常感谢。
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