[英]How to pick elements from both arrays so that the difference between the sum is the minimum
[英]How to swap members of two arrays so that the difference of sum of the elements of both arrays be minimum?
給定兩個無序數組array1
和array2
,它們的長度均為LEN
。 對於任何i
(0<=i<LEN)
,我都可以交換array1[i]
和array2[i]
。 現在,我必須以某種方式交換它們,以使array1
和array2
的元素之和之間的差最小。
例如:
array1=[1, 3, 5]
array2=[2, 4, 9]
現在,如果我交換兩個數組(5和9)的第三個成員,則差變為(1 + 3 + 9)-(2 + 4 + 5)= 2。
我發現了使用遞歸的解決方案。 在我的解決方案中,我檢查所有有效的組合,並且差異最小的地方就是我的答案。 但是這里的運行時復雜度是O(2^LEN)
。 我怎樣才能更有效地做到這一點?
PS陣列索引從0開始。
考慮第三個數組,其中第ith
條目是array1
和array2
ith
值的絕對差。 為新數組中的這些差異分配符號等同於確定是否要交換原始數組中的值。 現在,您正在嘗試解決使第三個數組中的(潛在符號交換)值的總和最小化的問題。 這是分區問題的優化版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.