Skip to content

Commit 845a0c6

Browse files
committed
python: Create partition to k equal sum subsets.
1 parent 7d8d654 commit 845a0c6

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
class Solution(object):
2+
def canPartitionKSubsets(self, nums, k):
3+
"""
4+
:type nums: List[int]
5+
:type k: int
6+
:rtype: bool
7+
"""
8+
9+
if sum(nums) % k != 0:
10+
return False
11+
12+
nums.sort(reverse = True)
13+
target = sum(nums) / k
14+
visited= set()
15+
16+
def backtrack(idx, count, currSum):
17+
if count == k:
18+
return True
19+
20+
if target == currSum:
21+
return backtrack(0, count + 1, 0)
22+
23+
for i in range(idx, len(nums)):
24+
25+
# skip duplicates if last same number was skipped
26+
if i > 0 and (i - 1) not in visited and nums[i] == nums[i - 1]:
27+
continue
28+
29+
if i in visited or currSum + nums[i] > target:
30+
continue
31+
32+
visited.add(i)
33+
34+
if backtrack(i + 1, count, currSum + nums[i]):
35+
return True
36+
37+
visited.remove(i)
38+
39+
return False
40+
41+
42+
return backtrack(0, 0, 0)

0 commit comments

Comments
 (0)