给定一个整数列表,其中一些可能是负数,提取总和为2个最大数的对

时间:2012-04-27 12:25:21

标签: java algorithm data-structures

O(n2)旁边是否有任何解决方案。 我正在考虑循环遍历每个值然后得到总和

2 个答案:

答案 0 :(得分:8)

由2个最大元素组成的对与总数最大。只需找到2个最大的元素并求它们 - 它是O(n)

对于总和为最大数字的一般k元素,您可以使用selection algorithm来查找k个最大元素,然后使用第二次迭代 - 将所有元素加总得比它大。

答案 1 :(得分:3)

如果你想获得两个最大的数字,你只需要一个循环,这将使算法O(n)不是O(n^2)

如果您需要更复杂的对分析,请对整数O(n log n)执行快速排序,然后您可以选择两个最大的数字,这两个数字将是您想要的最大对和任何其他对组合。