剑指 Offer II 101. 分割等和子集

182 阅读1分钟

剑指 Offer II 101. 分割等和子集

给定一个非空的正整数数组 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];
};

image.png