我在區間[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]
注意一個範圍在我的代碼表示爲:
public class Range{
public int Start {get;set;}
public int End {get;set;}
}
那麼什麼是最有效的方式找到重複區域?
任何幫助,將不勝感激。
PS:這裏有類似的問題How to find range overlap in python?但我不明白python代碼。
你怎麼知道是否存在更多的重疊或沒有檢查每個n個範圍? – dlev
我認爲他的意思是n是元素的範圍,而不是範圍的數量。例如,沒有迭代2000次並測試每個元素,[1,1000]與[100,2000]的重疊是什麼。他想計算僅迭代範圍(在本例中爲兩個)的相交範圍,而不是元素(其中的2000個)。 – hatchet
短斧是正確的,我要編輯我的帖子,使其更清晰 – Gui