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
Input: [1, 5, 11, 5]
Output: true
Explanation: The array can be partitioned as [1, 5, 5] and [11].
Solution
class Solution:
def canPartition(self, nums: List[int]) -> bool:
if sum(nums)&1 == 0:
target = sum(nums)>>1
cur = {0}
for n in nums:
cur |= {n + x for x in cur}
if target in cur:
return True
return False