程序将集合分成相等的总和集合,其中第一个集合中的元素小于Python中的第二个

假设我们有一个称为nums的数字列表,我们必须检查是否可以将列表分为A和B两类,以便:A的总和与B的总和相同。这里,A中的每个数字都严格小于B中的每个数字。

因此,如果输入像nums = [3,4,5,12],则输出将为True,因为我们可以让A = [3,4,5]和B = [12]且总和为12 。

为了解决这个问题,我们将遵循以下步骤-

  • 排序列表编号

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

  • s:= 0,i:= 0

  • 当我<nums的大小,

    • 返回True

    • s:= s +数字[i]

    • 我:=我+ 1

    • n:= nums [i]

    • 当i <nums的大小和nums [i]与n相同时,

    • 如果s与total-s相同,则

    • 返回False

    让我们看下面的实现以更好地理解-

    示例

    class Solution:
       def solve(self, nums):
          nums.sort()
          total = sum(nums)
          s = 0
          i = 0
          while i < len(nums):
             n = nums[i]
             while i < len(nums) and nums[i] == n:
                s += nums[i]
                i += 1
             if s == total - s:
                return True
          return False
    ob = Solution()nums = [3, 4, 5, 12]
    print(ob.solve(nums))

    输入值

    [3, 4, 5, 12]

    输出结果

    True
    猜你喜欢