題目描述
給定乙個整數陣列 nums ,找到乙個具有最大和的連續子陣列(子陣列最少包含乙個元素),返回其最大和。
示例:輸入: [-2,1,-3,4,-1,2,1,-5,4],
輸出: 6
解釋: 連續子陣列 [4,-1,2,1] 的和最大,為 6。
演算法是這樣子,比如序列是 1,2,-3, -3, 3
1、定義乙個數字,用來儲存每次累加的和sum, 再定義個數字,用來儲存得到的最大的和result
2、先將陣列的第乙個元素(也就是1)賦值給 sum和result
2、從第二個開始遍歷,每次遍歷的時候看sum是否為負數,這裡的思想就是說前邊的數累加的和對當前的這個數」有沒有幫助」,如果有的話,就把當前這個數字加到sum裡,如果sum為負數的話, 說明前邊的數已經加成乙個負數了,應該捨棄掉,重新開始了,那麼就把sum設定為當前的這個數字。最後是每次更改完sum之後要看之後的sum是不是大於result,是的話就result換成最新的sum,這個樣子可以保證result一直是最大的。
1、第一次遍歷的時候 sum 為 1, result 為 1, sum >= 0 ,把 2 加到 sum 裡, sum 為 3, result為1 ,sum > result, 把result的值設定為sum的值, 3.
2、第二次遍歷的時候 sum 為 3, result 為 3, sum >= 0 ,把 -3 加到 sum 裡, sum 為 0, result為3 ,sum < result,不做替換
3、第三次遍歷的時候 sum 為 0, result 為 3, sum >= 0 ,把 -3 加到 sum 裡, sum 為 -3, result為3 ,sum < result,不做替換
4、第四次遍歷的時候 sum 為 -3, result 為 3, sum < 0 ,sum替換為3. result為3 ,sum < result,不做替換
所以結果為3
動態規劃 求最大子序和 動態規劃題目總結
給定乙個整數陣列 nums 找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例 輸入 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6。解決動態規劃問題 主要分為以下三步 目標 objection 定義狀態 define sta...
最大子序和 動態規劃
給定乙個整數陣列 nums 找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例 輸入 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6。def maxsubarray nums length len nums for i in ...
動態規劃 最大子序和
給定乙個整數陣列 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...