在Python中找到最小绝对和差的程序
假设我们有两个大小相同的正值数组 nums1 和 nums2。这两个数组的绝对和差为 |nums1[i] - nums2[i]| 之和 对于每个 0 <= i < n(0 索引)。现在,我们最多可以用 nums1 中的任何其他元素替换 nums1 的一个元素,以最小化绝对和差。我们必须找到最多替换数组 nums1 中的一个元素后的最小绝对和差。答案可能非常大,因此以 10^9 + 7 为模返回。
所以,如果输入像 nums1 = [2,8,6], nums2 = [3,4,6],那么输出将是 3 因为,我们可以找到两个可能的最优解
将索引 1 处的元素替换为索引 0 处的元素:[2,8,6] => [2,2,6],或
将索引 1 处的元素替换为索引 2 处的元素:[2,8,6] => [2,6,6]。
两者的和差为|2-3| + (|2-4| 或 |6-4|) + |6-6| = 3。
示例
让我们看看以下实现以获得更好的理解 -
def solve(nums1, nums2):if(nums1==nums2):
return(0)
minn_diff = float('-inf')
ind = -1
for i in range(len(nums1)):
if(abs(nums1[i]-nums2[i]) > minn_diff):
ind = i
minn_diff = abs(nums1[i]-nums2[i])
diff = abs(nums1[ind]-nums2[ind])
index = ind
for i in range(len(nums1)):
if(i!=ind):
if(abs(nums1[i]-nums2[ind])<diff):
index = i
diff = abs(nums1[i]-nums2[ind])
summ = 0
for i in range(len(nums1)):
if(i==ind):
summ += abs(nums1[index]-nums2[i])
else:
summ += abs(nums1[i]-nums2[i])
return(summ%(10**9 + 7))
nums1 = [2,8,6]
nums2 = [3,4,6]
print(solve(nums1, nums2))
输入
[2,8,6], [3,4,6]输出结果
3
以上是 在Python中找到最小绝对和差的程序 的全部内容, 来源链接: utcz.com/z/361644.html