算法 - 找出数组中两个数之和的最大数

标签 algorithm

描述:

给定一个由 n 个正整数组成的数组,找到使 C=A+B 的最大 C。 A,B,C 都在给定的数组中。

示例:

1 1 1 4 5 5 6 6 10 9 C=10

1 3 6 C=-1,表示最大的C不存在

我正在寻找一种小于 O(n^3) 的算法,谁能给我一些指导?

最佳答案

对列表进行排序。从最大到最小遍历 C,从最小到 C 的值遍历 B。到目前为止,它是 O(n^2)。对于每个 (C, B) 对,计算 A,您只需要查找它是否在数组中即可。您可以对 O(n^2 log n) 的总时间使用二进制搜索。

关于算法 - 找出数组中两个数之和的最大数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14575430/

相关文章:

algorithm - 有谁知道这是否是多项式可解的?

algorithm - 使用动态规划实现事件选择问题

algorithm - 为什么在这个方程中是 p/n?

algorithm - 动态规划递归公式

python - 从 0 到 n 的数字中数字出现的次数

iphone - iPhone Facebook 3.0 主页制作攻略

java - 给定三个元素的索引找到中位数

algorithm - 简单移动平均求和/偏移问题

java-用节点理解LinkedList面试题

algorithm - 如何在常数时间内从给定的索引区间 (i, j) 中找到元素的总和?