【发布时间】:2019-06-27 13:49:46
【问题描述】:
我有两个用整数填充的等长数组(可以是正数或负数,但从不为 0)。在每个索引处,我可以选择 array1 的元素,也可以从 array2 中选择元素,并且这些元素之和的绝对值应该是最小的。
例如:
a1 = [2, 2, 1]
a2 = [-3, -3, -4]
正确的答案是这样选择:
At index 0 : -3 from a2
At index 1 : 2 from a1
At index 2 : 1 from a1
因此,最终总和为 0。
【问题讨论】:
-
那你的方法是什么?
-
您可以自上而下或自下而上进行。
-
我的方法是从两个数组中获取具有最小绝对值的元素,这适用于很多情况,但在我在问题中显示的示例中失败。这可以在没有 dp 的情况下完成吗?
-
Can this be done without dp?可能(也许在空间上有所改善)。但是,您能否举出更多示例,因为absoulute value of the sum对我来说有点不清楚。 -
当然,a1 = [2, 1, 1, -1] a2 = [-1, -2, -2, -4] ans = [-1, 1, 1, -1]顺便说一句,我想最小化的是 pos + abs(neg + pos)。这里,pos 和 neg 是从两个原始元素中挑选出理想元素后形成的最终数组的正负值之和。这就是为什么我选择 -3、2、1 而不是 2、2、-4。
标签: arrays algorithm sorting dynamic-programming greedy