程序将集合分成相等的总和集合,其中第一个集合中的元素小于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