前 - : 令序列为= {1,8,2,9}并且子序列的长度= 2,则可以获得的最大和来自子序列{8,9},并且该和是8 + 9 = 17。 我该如何为此编写算法?
答案 0 :(得分:0)
易。
只需扫描保留两个最高数字的序列即可。伪代码:
Initialize m1 and m2 to lowest possible element (0 or -max int)
for each item in the sequence:
if item > m1 then
m2 = m1
m1 = item
循环输出m2 + m1
之后这不会考虑小于2个元素的帐户,但您可以轻松添加此边缘情况。
如果您选择任何K而不是2,只需使用K个元素的集合(数组)而不是2个变量。
这是O(n)。