美文网首页LeetCode
416. 分割等和子集

416. 分割等和子集

作者: cptn3m0 | 来源:发表于2019-03-10 15:40 被阅读1次
    class Solution(object):
        def canPartition(self, nums):
            """
            :type nums: List[int]
            :rtype: bool
            """
            # guard phase 
            # 处理异常情况
            sum = 0
            for n in nums:
                sum+=n
            if sum%2==1:
                return False
            
            target_num = sum//2
            
            
            print target_num
            dp =  [[False]*(target_num+1) for _ in range(len(nums)+1)]
            
            # init
            # 使用前 i 个元素组成空集,是 ok 的 TRUE
            # dp[i][0] 表示的是上面提示的意思
            
            for i in range(len(nums)+1):
                dp[i][0] = True
            
            for i in range(1, len(nums)+1):
                for j in range(1, target_num+1):
                    if j>= nums[i-1]:
                        dp[i][j] = dp[i-1][j] or dp[i-1][j-nums[i-1]]
                    else:
                        dp[i][j] = dp[i-1][j]
            return dp[-1][-1]
        
    

    相关文章

      网友评论

        本文标题:416. 分割等和子集

        本文链接:https://www.haomeiwen.com/subject/esoupqtx.html