首页 > 代码库 > Leetcode: Partition Equal Subset Sum
Leetcode: Partition Equal Subset Sum
Given a non-empty array containing only positive integers, find if the array can be partitioned into two subsets such that the sum of elements in both subsets is equal. Note: Each of the array element will not exceed 100. The array size will not exceed 200. Example 1: Input: [1, 5, 11, 5] Output: true Explanation: The array can be partitioned as [1, 5, 5] and [11]. Example 2: Input: [1, 2, 3, 5] Output: false Explanation: The array cannot be partitioned into equal sum subsets.
Backpack problem: dp[i][j] means if the first i elements can sum up to value j
dp[i][j] = dp[i-1][j] || (j>=nums[i-1] && dp[i-1][j-nums[i-1]])
the result is if the half sum of the array can be summed up by elements in the array
1 public class Solution { 2 public boolean canPartition(int[] nums) { 3 if (nums.length == 0) return true; 4 int volume = 0; 5 for (int num : nums) { 6 volume += num; 7 } 8 if (volume % 2 == 1) return false; 9 volume /= 2; 10 boolean[] dp = new boolean[volume+1]; 11 dp[0] = true; 12 for (int i=1; i<=nums.length; i++) { 13 for (int j=volume; j>=0; j--) { 14 dp[j] = dp[j] || (j>=nums[i-1] && dp[j-nums[i-1]]); 15 } 16 } 17 return dp[volume]; 18 } 19 }
Leetcode: Partition Equal Subset Sum
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。