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:
1 2 3 4 5
Input: [1, 5, 11, 5]
Output: true
Explanation: The array can be partitioned as [1, 5, 5] and [11].
Example 2:
1 2 3 4 5
Input: [1, 2, 3, 5]
Output: false
Explanation: The array cannot be partitioned into equal sum subsets.
classSolution{ publicbooleancanPartition(int[] nums){ int sum = 0; if (nums == null) returnfalse; for (int i: nums) sum += i; if (sum % 2 != 0) returnfalse; sum = sum/2; return helper(nums, sum, 0); } publicbooleanhelper(int[] nums, int target, int k){ if (target == 0) returntrue; if (target < 0) returnfalse; for (int i=k; i<nums.length; i++) { if (helper(nums, target-nums[i], i+1)) returntrue; } returnfalse; } }