此问题有2个变体。
给定2个整数数组,从每个数组中选择单个元素,以使它们的和与给定的整数值V最小(从数字上)。总和可以大于V。
给定3个整数数组,从每个数组中选择一个元素,以使它们的和与给定的整数值V最小(从数字上)。总和可以大于V。
我知道分别有一个简单的O(n ^ 2)和O(n ^ 3)解决方案,我想问一下是否有任何方法可以优化运行时间。
答案 0 :(得分:0)
对于第一种情况,您可以对O(nlogn)
中的两个数组进行排序,然后对于第一个数组中的每个元素x
,使用二进制-在第二个数组中找到V-x
搜索/上限算法。
其总复杂度仍为O(nlogn)
,小于O(n*n)
。
对于第二种情况,您可以应用复杂度为O(n*n*log(n))
的相似算法。