2016-05-13 24 views
0

如果我有一個數字的範圍,我需要返回不彼此例如重疊套,這裏是一組數字:比較多量程和返回非重疊的集合

1,4 
0,3 
4,7 
0,4 

我需要返回:

0,3 
4,7 

更大的數據集的例子:

0,1 
0,2 
2,5 
4,8 
3,7 
8,11 
8,9 
9,11 

我需要返回:

0,2 
3,7 
8,11 

這將需要考慮的情況下,如果一個較小的集合在另一個,應該被丟棄。使用之前的集合,

0,1 
0,2 
3,7 

因爲0,1包含在0,2集合0,1中應該被丟棄。

任何幫助,將不勝感激。非常感謝。

+0

你是什麼意思'包含在'內? –

+1

如果一個範圍是0-2 [0,1,2]而另一個範圍是0-1 [0,1],則1在0-2之間,因此應該丟棄0,1。這有幫助嗎? – AnonPyDev

回答

1

如果你的目標是找到最大的非重疊集合,你應該檢查Interval scheduling問題,特別是使用貪婪算法的解決方案。如果性能無關緊要,您可以嘗試使用python set聯合或子集並比較集合。

set(range(0, 4)).union(set(range(0, 1))) 
+0

目標是找到一組中最大的非重疊集合,它們將彼此相鄰。例如,0,4和5,8和9,11,以便將3,10丟棄。 – AnonPyDev

+0

您可能想要使用遞歸函數來查找彼此相鄰的函數。不知道如何做到這一點。 –

+0

感謝您提到間隔時間安排。這正是我所尋找的,我可以修改以下代碼以獲得所需的結果: https://github.com/farazdagi/algorithms/blob/master/weighted-interval-scheduling.py – AnonPyDev