给定一个非空的正整数数组 nums ,请判断能否将这些数字分成元素和相等的两部分。
动态规划
var canPartition = function (nums) {
var sum = 0;
var target
for (var num of nums) {
sum += num;
}
if ((sum & 1) != 0) {
return false
} else {
target = sum / 2;
}
var n = nums.length;
var dp = new Array(target + 1).fill(false);
dp[0] = true;
for (var i = 1; i < n; i++) {
for (var j = nums[i]; j <= target; j++) {
dp[j] = dp[j] || dp[j - nums[i]];
}
}
return dp[target];
};