Leetcode416.分割等和子集
Leetcode416.分割等和子集
题目
给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。
用例
输入:nums = [1,5,11,5]
输出:true
解释:数组可以分割成 [1, 5, 5] 和 [11] 。
输入:nums = [1,2,3,5]
输出:false
解释:数组不能分割成两个元素和相等的子集。
求解
/**
* @param {number[]} nums
* @return {boolean}
*/
var canPartition = function(nums) {
let sum = 0
for(let i=0;i<nums.length;i++){
sum=sum+nums[i]
}
if(sum%2!=0) return false
let target = sum/2
let dp= new Array(nums.length+1).fill(0).map(() => new Array(target+1).fill(false))
console.log(dp.length)
console.log(dp[0].length)
for(let i=1;i<dp.length;i++){
for(let j=1;j<dp[0].length;j++){
if(nums[i-1]==j){
dp[i][j]=true
}else{
dp[i][j]= dp[i-1][j] || (j-nums[i-1]>=0?dp[i-1][j-nums[i-1]]:false)
}
if(dp[i][target]) return true
}
}
console.log(dp)
return false
};

浙公网安备 33010602011771号