1class Solution:2def canPartition(self, nums: List[int]) -> bool:3dp, s = set([0]), sum(nums)4if s & 1:5return False6for num in nums:7for curr in range(s >> 1, num - 1, -1):8if curr not in dp and curr - num in dp:9if curr == s >> 1:10return True11dp.add(curr)12return False