【发布时间】:2017-04-27 00:26:19
【问题描述】:
这个问题的输入是一个实数数组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) 内解决此问题的蛮力解决方案,但也可以在线性时间内解决该问题。
- 设计一种算法,在线性时间内解决上述问题。用伪代码展示您的算法。
- 简要说明您的算法如何以及为何起作用。
- 简要说明为什么您的算法确实在线性时间内运行。
【问题讨论】:
标签: algorithm subsequence contiguous