0
此问题的输入是实数的数组A[1...n]
。您需要找出通过总结A
的连续子序列A[i],A[i+1],...A[j]
的所有数字可以获得的最高值。如果A
不包含负数,则问题很简单,可以通过总结A
的所有元素来解决。当A
包含正数和负数的混合时,它变得更加棘手。最大值连续子序列算法
例如,对于A = [-2,11,-4,13,-5,-3]
,解决方案是20
(11-4 + 13 = 20)。对于A = [-2,1,-3,4,-1,2,1,-5,4]
,解决方案是6
(4-1 + 2 + 1 = 6)。空子序列号的总和为0
。
存在一个蛮力解决方案,解决了在为O(n^3)这个问题,但它也可以解决线性时间的问题。
- 设计一个算法来解决线性时间上面描述的问题。以伪代码的形式呈现您的算法。
- 简要说明算法的工作原理和原因。
- 给出一个简单的解释,说明为什么你的算法确实在线性时间运行。