设计一个线性算法,找到at的连续子序列 大多数M在N个整数序列中具有最高的总和 所有这些子序列。实现你的算法,并确认 它的运行时间增长顺序是线性的。
我已经阅读了几次,但是我很难理解它希望我做什么。
答案 0 :(得分:6)
假设一行中有10个整数。您可以按顺序选择任何1,2或3个并添加它们。你需要找出你会选择哪些,以便总和最大。在这种情况下,M = 3,N = 10。 您的算法必须以线性时间运行。
答案 1 :(得分:2)
我认为这意味着这样(以下是Alex的回答):
N = 10
144 23 89 21 145 2 11 9 1 69
M = 3 (this is max)
take 1 number
highest is 145
take 2 numbers consequtive
highest is 144 + 23 = 167
take 3 numbers consequtive
highest is 144 + 23 + 89 = 256
Therefore answer = 144, 23, 89
包括否定或零:
N = 10
0 -23 -89 21 -145 -2 11 -1 1 69
M = 3 (this is max)
take 1 number
highest is 69
take 2 numbers consequtive
highest is 1 + 69 = 70
take 3 numbers consequtive
highest is -1 + 1 + 69 = 69
Therefore answer = 1, 69
如果我对或错,请发表评论。
我找不到子序列中的数字计数可能小于M的情况。无论我如何看待它,都必须是M. *
只有窗口不必总是包含N个整数中的最高值。
*
好的我发现了一个小于M的情况。见上面的第二个代码块。