1
var canPartitionKSubsets = function (nums, k) {
2
const sum = nums.reduce((sum, num) => sum + num);
3
const divide = sum / k;
4
if (!Number.isInteger(divide)) return false;
5
const subsets = Array(k).fill(0);
6
const dfs = (index = 0) => {
7
if (index >= nums.length) return true;
8
const visited = new Set();
9
const num = nums[index];
10

11
for (let sub = 0; sub < k; sub++) {
12
const subset = subsets[sub];
13
if (visited.has(subset) || subset + num > divide) continue;
14

15
visited.add(subset);
16
subsets[sub] += num;
17
if (dfs(index + 1)) return true;
18
subsets[sub] -= num;
19
}
20
return false;
21
};
22

23
nums.sort((a, b) => b - a);
24
return dfs();
25
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0