有n數組的k大小。找到所有可能的數字組的最大值和最小值之間的最小差值
a0[0],a0[1],......a0[k-1]
a1[0],a1[1],......a1[k-1]
.
.
.
an-1[0],an-1[1], .... an-1[k-1]
根本沒有重複,所有的數組排序。
現在,一組大小n通過從每個數組中隨機取任意值來構造。 ,例如一個這樣的組可以是{a0[0],a1[3],a2[2],.... an-1[k-1]}
。
我的目標是找出所有可能集中的最小和最大元素,使得最小值和最大值之間的差值最小。
實施例(K = 3,N = 3)
[3 7 11]
[1 12 15]
[4 19 21]
所以數學會有27組這樣
(3 1 4) (3 12 4) (3 15 4)
(3 1 19) (3 12 19) (3 15 19)
(3 1 21) (3 12 21) (3 15 21)
(7 1 4) (7 12 4) (7 15 4)
(7 1 19) (7 12 19) (7 15 19)
(7 1 21) (7 12 21) (7 15 21)
(11 1 4) (7 12 4) (11 15 4)
(11 1 19) (7 12 19) (11 15 19)
(11 1 21) (7 12 21) (11 15 21)
計算所有這些組,我們可以得出這樣的結論的最小值和最大值後(3 1 4)是min(1)和max(4)之差爲全局最小值或最小值的集合。因此,我們將輸出3作爲全局最小差異和相應的對(3 4)。如果有多個全局最小值,則將它們全部打印出來。請提出更好的時間和空間複雜度的算法。我們不能採取暴力手段。
編輯:不要做藥的孩子。在這裏留下我的舊評論,因爲它非常愚蠢:「在這一天的這個時候我非常密集,所以我可能是錯的 - 但是如果沒有重複,只需找到最小差異,這在O(n * k) (+ O(n * k))因此,所有由每對(+ pairsFound * O(n * k))之間的數組組成的集合。 = O(n * k)?「 – 2013-04-09 19:04:31
如果我正確地理解了這個問題,如果我將K個大小的N數組連接到一個數組,然後對它們進行排序,那麼我選擇第一個P麻木(Set = P大小),我可以得到Pn-p0的最小值? – dekdev 2013-04-09 19:08:48
你認爲'n'有多大? – 2013-04-09 19:13:56