O(n2)旁边是否有任何解决方案。 我正在考虑循环遍历每个值然后得到总和
答案 0 :(得分:8)
由2个最大元素组成的对与总数最大。只需找到2个最大的元素并求它们 - 它是O(n)
对于总和为最大数字的一般k
元素,您可以使用selection algorithm来查找k个最大元素,然后使用第二次迭代 - 将所有元素加总得比它大。
答案 1 :(得分:3)
如果你想获得两个最大的数字,你只需要一个循环,这将使算法O(n)
不是O(n^2)
。
如果您需要更复杂的对分析,请对整数O(n log n)
执行快速排序,然后您可以选择两个最大的数字,这两个数字将是您想要的最大对和任何其他对组合。