Skip to content

Commit 13050f9

Browse files
authored
Create partition-array-into-two-arrays-to-minimize-sum-difference.py
1 parent 30b75bb commit 13050f9

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Time: O(n * 2^n)
2+
# Space: O(2^n)
3+
4+
import itertools
5+
import bisect
6+
7+
8+
class Solution(object):
9+
def minimumDifference(self, nums):
10+
"""
11+
:type nums: List[int]
12+
:rtype: int
13+
"""
14+
left, right = nums[:len(nums)//2], nums[len(nums)//2:]
15+
total1, total2 = sum(left), sum(right)
16+
result = float("inf")
17+
for k in xrange(len(left)+1):
18+
sums = sorted(2*sum(comb)-total1 for comb in itertools.combinations(left, k))
19+
for comb in itertools.combinations(right, len(left)-k):
20+
diff = 2*sum(comb)-total2
21+
i = bisect.bisect_left(sums, -diff)
22+
if i < len(sums):
23+
result = min(result, abs(sums[i]+diff))
24+
if i > 0:
25+
result = min(result, abs(sums[i-1]+diff))
26+
return result

0 commit comments

Comments
 (0)