Skip to content

Commit 979ad81

Browse files
committed
Create 0698-partition-to-k-equal-sum-subsets.kt
1 parent 324cd74 commit 979ad81

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
class Solution {
2+
fun canPartitionKSubsets(nums: IntArray, k: Int): Boolean {
3+
4+
var target = nums.sum()
5+
if(target%k != 0) return false // we cant divive nums equally by k
6+
target /= k
7+
8+
9+
val used = BooleanArray(nums.size)
10+
nums.sortDescending()
11+
12+
fun backtrack(i: Int, k: Int, sum: Int): Boolean {
13+
14+
if(k == 0) return true
15+
16+
if(sum == target) return backtrack(0, k-1, 0)
17+
18+
for(j in i until nums.size){
19+
if(nums[j] > target) return false
20+
if(used[j]==true || nums[j]+sum > target) continue
21+
used[j] = true
22+
if(backtrack(j+1, k, sum+nums[j]) == true) return true
23+
used[j] = false
24+
}
25+
26+
return false
27+
}
28+
29+
return backtrack(0,k,0)
30+
}
31+
}

0 commit comments

Comments
 (0)