查找总和距给定值最小的对/三胞胎

时间:2019-04-25 04:47:38

标签: arrays algorithm data-structures time-complexity

此问题有2个变体。

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

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

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

1 个答案:

答案 0 :(得分:0)

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

对于第二种情况,您可以应用复杂度为O(n*n*log(n))的相似算法。