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)這個問題,但它也可以解決線性時間的問題。
- 設計一個算法來解決線性時間上面描述的問題。以僞代碼的形式呈現您的算法。
- 簡要說明算法的工作原理和原因。
- 給出一個簡單的解釋,說明爲什麼你的算法確實在線性時間運行。