思路
nums数组中的每个数字都要选择进入到k个桶中的某一个。
选择列表:若该桶能装下该数字,则该桶可以成为选择。
代码
var canPartitionKSubsets = function(nums, k) {
let bucket = new Array(k).fill(0);
let sum = nums.reduce((pre, curr)=> pre+=curr, 0);
if(sum%k!=0) return false;
let target = sum / k;
var fn = function(nums, k){
if(nums.length==0) return true;
for(let i=0; i<k; i++){
if(bucket[i]+nums[0]<=target){
bucket[i] += nums[0];
let newnums = nums.slice(1);
if(fn(newnums, k)) return true;
bucket[i] -= nums[0];
}
}
return false;
}
return fn(nums, k);
};