有人能告诉我这是告诉我的吗?

时间:2012-11-13 01:44:11

标签: java algorithm

  

设计一个线性算法,找到at的连续子序列   大多数M在N个整数序列中具有最高的总和   所有这些子序列。实现你的算法,并确认   它的运行时间增长顺序是线性的。

我已经阅读了几次,但是我很难理解它希望我做什么。

2 个答案:

答案 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的情况。见上面的第二个代码块。