均匀平衡两个整数数组

Balance two arrays of integers evenly

我有两个整数数组。我正在寻找一种算法来平衡两个数组上两个数组的数字之和(尽可能准确)。

数组之间的数字分配应达到平衡,并且两个数组的数字总和相同。如果无法分配,则输出差值。

最后,两个数组中的数值应该相同(不是整数的个数)。 在所示的情况下,解决方案很简单,因为只需要移动一个数字。然而,也有一些复杂的情况,数字必须“双向”移动以创造平衡。

最好的解决方案是什么?

非常感谢。

  • 只需创建一个数组并在其中填充两个数组值。
  • 使用分区相等子集和。

解决方案-1:(如果你只想检查是否可行,那么使用这个)

def canPartition(self, nums: List[int]) -> bool:
        total = sum(nums)
        if(total%2 == 1):
            return False
        size = len(nums)
        amount= total//2
        m = 1
        for n in nums:
            m |= (m << n)
        return (m >> amount) & 1

解决方案-2:(如果你想要数组值只需更新下面代码的逻辑)

def canPartition(self, nums: List[int]) -> bool:
    total = sum(nums)
    if(total%2 == 1):
        return False
    size = len(nums)
    amount= total//2
    total = [False for i in range(amount+1)]
    total[0] = True
    for j in nums:
        for i in range(amount,j-1,-1):
            if(i-j >=0):
                if(total[i-j]):
                    total[i] = True
    if(total[amount] == False):
        return False
    else:
        return total[amount]