均匀平衡两个整数数组
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]
我有两个整数数组。我正在寻找一种算法来平衡两个数组上两个数组的数字之和(尽可能准确)。
数组之间的数字分配应达到平衡,并且两个数组的数字总和相同。如果无法分配,则输出差值。
最后,两个数组中的数值应该相同(不是整数的个数)。 在所示的情况下,解决方案很简单,因为只需要移动一个数字。然而,也有一些复杂的情况,数字必须“双向”移动以创造平衡。
最好的解决方案是什么?
非常感谢。
- 只需创建一个数组并在其中填充两个数组值。
- 使用分区相等子集和。
解决方案-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]