我有以下区间在[1-15]范围内。
我想找到人1和人2之间的重叠范围。 Person1 [1, 3] [5, 10] Person2 [2, 4] [8, 15]
在这里,我应该得到一个列表,其范围为[2,3],[8, 10]。
到目前为止,我发现要循环使用person1的范围,然后再使用person2的范围,然后对于每个范围的每个元素,再使用条件测试。但是,这种解决方案并不满足我的要求,因为它的时间复杂度是O(n)。如果要查看这些范围之间的交集,则范围中的元素越多,算法将循环的时间就会越长。
Person1:[100000;150000]和[90000;140000]。 Person2:[105000;110000]和[130000;140050]
需要注意的是,在我的代码中,一个范围由下面的方式表示:
我想找到人1和人2之间的重叠范围。 Person1 [1, 3] [5, 10] Person2 [2, 4] [8, 15]
在这里,我应该得到一个列表,其范围为[2,3],[8, 10]。
到目前为止,我发现要循环使用person1的范围,然后再使用person2的范围,然后对于每个范围的每个元素,再使用条件测试。但是,这种解决方案并不满足我的要求,因为它的时间复杂度是O(n)。如果要查看这些范围之间的交集,则范围中的元素越多,算法将循环的时间就会越长。
Person1:[100000;150000]和[90000;140000]。 Person2:[105000;110000]和[130000;140050]
需要注意的是,在我的代码中,一个范围由下面的方式表示:
public class Range{
public int Start {get;set;}
public int End {get;set;}
}
那么找到重叠范围的最有效方法是什么?
任何帮助都将不胜感激。
附注:这里有一个类似的问题How to find range overlap in python?但我不理解Python代码。