Back to all solutions
#698 - Partition to K Equal Sum Subsets
Problem Description
Given an integer array nums and an integer k, return true if it is possible to divide this array into k non-empty subsets whose sums are all equal.
Solution
/**
* @param {number[]} nums
* @param {number} k
* @return {boolean}
*/
var canPartitionKSubsets = function(nums, k) {
const sum = nums.reduce((a, b) => a + b);
if (sum % k !== 0) {
return false;
}
const target = sum / k;
nums.sort((a, b) => b - a);
if (nums[0] > target) {
return false;
}
const used = new Array(nums.length).fill(false);
return backtrack(0, 0, 0);
function backtrack(index, count, updatedSum) {
if (count === k) return true;
if (updatedSum === target) return backtrack(0, count + 1, 0);
if (updatedSum > target) return false;
for (let i = index; i < nums.length; i++) {
if (!used[i]) {
used[i] = true;
if (backtrack(i + 1, count, updatedSum + nums[i])) return true;
used[i] = false;
if (updatedSum === 0) break;
}
}
return false;
}
};