0

这个问题有两种变体。

  1. 给定 2 个整数数组,从每个数组中选择单个元素,使它们的总和与给定整数值 V 的距离(数值上)最小。总和可以大于 V。

  2. 给定 3 个整数数组,从每个数组中选择单个元素,以使它们的总和(在数值上)与给定整数值 V 的距离最小。总和可以大于 V。

我知道它们分别有一个简单的 O(n^2) 和 O(n^3) 解决方案,我想问一下是否有任何方法可以优化运行时间。

4

1 回答 1

0

对于第一种情况,您可以对 中的两个数组进行排序O(nlogn),然后对于第一个数组中的每个元素xV-x使用二分搜索/上限算法在第二个数组中查找。
它的总复杂度仍然O(nlogn)是小于O(n*n).

对于第二种情况,您可以应用具有O(n*n*log(n))复杂性的类似算法。

于 2019-04-25T05:35:08.167 回答