天天看點

最大子序和

給定一個整數數組 nums ,找到一個具有最大和的連續子數組(子數組最少包含一個元素),傳回其最大和。

示例 1:

輸入:nums = [-2,1,-3,4,-1,2,1,-5,4]

輸出:6

解釋:連續子數組 [4,-1,2,1] 的和最大,為 6 。

示例 2:

輸入:nums = [1]

輸出:1

示例 3:

輸入:nums = [0]

輸出:0

示例 4:

輸入:nums = [-1]

輸出:-1

示例 5:

輸入:nums = [-100000]

輸出:-100000

這題找最大子序和,注意這裡是必須連續的。本題使用動态規劃的思想,設dp表示目前元素能取的最大自序和,那麼怎麼找每個元素到目前為止的最大子序和呢?我們可以這樣想,當我們從前向後找最大的時候,如果前面的元素加上目前值比目前值小,那麼說明前面的就是累贅,我肯定取目前元素為dp的最大值,相反,如果目前元素加上前面的值比目前元素大,那麼說明目前的dp是前面的和加上目前元素作為目前的dp最大值。

最大子序和

出來混總是要還的