【发布时间】:2018-08-03 09:09:19
【问题描述】:
我最近在一次工作面试中被要求在给定约束条件下找到两个数组的最大总和。这个问题的措辞不同,但归结为我上面所说的。没有提到元素是不同的,或者数组是排序的。
例子:
A = [2000, 3000, 4000, 5000]
B = [6000, 5000, 4000, 1000]
Constraint: A[i] + B[j] <= 7000
Expected Result: (A[0], B[1]), (A[1], B[2])
请注意,由于限制,这与Find the pair across 2 arrays with kth largest sum 不是同一个问题。
蛮力解决方案是取 2 个数组的笛卡尔积,计算每对的和,过滤掉大于 7000 的数组,排序,取相等的最高值。时间复杂度为 O(n2)。我们能做得更好吗?
【问题讨论】: