【发布时间】:2020-04-05 13:02:43
【问题描述】:
我有两个长度相等的数组,可以选择array1或array2,求和的输出必须是最小的。但是,我从 array1 中选择元素的次数必须与我从 array2 中选择的次数相同。
例子:
array1 = [2, 3, 5, 1]
array2 = [1, 2, 3, 2]
输出将是 8,因为:
At index0: I picked 2 from array1.
At index1: I picked 2 from array2.
At index2: I picked 3 from array2.
At index3: I picked 1 from array1.
我目前的方法:我根据 array1 上的元素对数组进行排序。所以我在 index0 和 index1 处选择了 array1,然后在 index2 和 index3 处选择了 array2。
排序后的示例:
array1 = [1, 2, 3, 5]
array2 = [2, 1, 2, 3]
At index0: I picked 1 from array1.
At index1: I picked 2 from array1.
At index2: I picked 2 from array2.
At index3: I picked 3 from array2.
但是,当数组是这样的时候,我可能会遇到问题:
array1 = [2, 3, 5, 1]
array2 = [1, 7, 6, 2]
根据array1排序后:
array1 = [1, 2, 3, 5]
array2 = [2, 1, 7, 6]
At index0: I picked 1 from array1.
At index1: I picked 2 from array1.
At index2: I picked 7 from array2.
At index3: I picked 6 from array2.
当理想的解决方案是:
At index0: I picked 2 from array2.
At index1: I picked 1 from array2.
At index2: I picked 3 from array1.
At index3: I picked 5 from array1.
有人可以帮我解决这个问题吗?谢谢。
【问题讨论】:
-
目前还不清楚如何从数组中挑选元素。
-
假设有 2 个数组,a[i] 和 b[i]。我必须根据 2 个数组的输入输出最小的和数。但是,从 a[i] 中选取元素的次数必须与 b[i] 相同。示例:左侧是 a[i] 的输入,右侧是 b[i] 2 1, 3 2, 5 3, 1 2 的输入。输出将是 8。因为我在索引 0 处选择了 a[i], b[i] 在索引 1 和 2 处,a[i] 在索引 3 处,它给出最小的和值。
-
数组第一个例子的最小和是array1[3] + array2[0]
-
不,假设如果array1 和array2 有4 个输入,我必须从array1 和array2 中选择2 个输入。所以它将是 a[0] + b[1] + b[2] + a[3] = 8,这将给出最小的总和值。
-
据我了解:对于每个索引,您必须从 array1 或 array2 中进行选择,但 array1 的最终选择计数应该与 array2 中的计数相同。