程序来检查是否可以在Python中将两个分区组成相等的组?

假设我们有一个称为nums的数字列表,我们必须检查是否可以将nums分为两组,两组中的元素之和是相同的。

因此,如果输入像nums = [2,3,6,5],那么输出将为True,因为我们可以将组划分为:[2,6]和[3,5]。

为了解决这个问题,我们将按照以下步骤

  • 总计:=所有元素的总和

  • 如果总数是奇数,则

    • 返回False

  • 一半:=总数的整数部分/ 2

  • dp:=大小为一半+ 1并以false填充的列表

  • dp [0]:= true

  • 对于以num为单位的每个num

    • 如果i> = num,则

    • dp [i]:= dp [i]或dp [i-num]

    • 因为我的范围是0的一半,所以减少1,

    • 返回dp [一半]


    示例

    class Solution:
       def solve(self, nums):
    
          total = sum(nums)
    
          if total & 1:
             return False
    
          half = total // 2
    
          dp = [True] + [False] * half
          for num in nums:
             for i in range(half, 0, -1):
                if i >= num:
                   dp[i] |= dp[i - num]
    
          return dp[half]
    
    ob = Solution()nums = [2, 3, 6, 5]
    print(ob.solve(nums))

    输入项

    [2, 3, 6, 5]

    输出结果

    True
    猜你喜欢