416. Partition Equal Subset Sum
Description
Given an integer array nums
, return true
if you can partition the array into two subsets such that the sum of the elements in both subsets is equal or false
otherwise.
Example 1:
Input: nums = [1,5,11,5] Output: true Explanation: The array can be partitioned as [1, 5, 5] and [11].
Example 2:
Input: nums = [1,2,3,5] Output: false Explanation: The array cannot be partitioned into equal sum subsets.
Constraints:
1 <= nums.length <= 200
1 <= nums[i] <= 100
Solutions
Solution: Dynamic Programming
- Time complexity: O(n*SUM(nums)/2)
- Space complexity: O(SUM(nums)/2)
JavaScript
js
/**
* @param {number[]} nums
* @return {boolean}
*/
const canPartition = function (nums) {
const totalSum = nums.reduce((sum, num) => sum + num);
if (totalSum % 2) return false;
const subsetSum = totalSum / 2;
const dp = Array.from({ length: subsetSum + 1 }, () => false);
dp[0] = true;
for (const num of nums) {
for (let sum = subsetSum; sum >= num; sum--) {
dp[sum] = dp[sum - num] || dp[sum];
}
}
return dp[subsetSum];
};