给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。
class Solution:
def canPartition(self, nums: List[int]) -> bool:
if sum(nums)%2!=0:
return False
#%取余
target=int(sum(nums)/2)
#在Python中,除法运算符 / 默认输出 float 类型
dp=[0]*(target+1)
for i in nums:
for j in range(target,i-1,-1):
dp[j]=max(dp[j],dp[j-i]+i)
return dp[-1]==target