題目:
給定乙個整數陣列 nums ,找到乙個具有最大和的連續子陣列(子陣列最少包含乙個元素),返回其最大和。
int n=nums.length;
int[
] msa=
newint
[n];
msa[0]
=nums[0]
;int max=msa[0]
;for
(int j=
1;j)return max;
解析:
求最大子序和,最直觀的就是暴力演算法,窮舉全部情況比較出max,但考慮到複雜度原因,暴力演算法並不太現實,於是考慮動態規劃。此題類似於尋找最短路徑問題,故建立多階段決策動態規劃模型。
模型建立:
將子串行分階段,記msa[ i ]為以nums[ i ]為結尾的最大子串行和。先初始化msa[ 0 ] = nums[ 0 ],max = msa[ 0 ]
當 msa[ i - 1 ] > 0 時,更新msa[ i ] = nums[ i ] + msa[ i - 1 ];若msa[ i - 1] < 0 時則msa[ i ] = nums[ i ]
最後比較max與msa[ i ]的大小,大的值賦予max
重複2、3步驟,直到遍歷完陣列nums,然後返回max值
力扣 53 最大子序和
題目描述 簡單 給定乙個整數陣列nums,找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。題目鏈結 示例 1 輸入 2,1,3,4,1,2,1,5,4 輸出 6解釋 連續子陣列 4,1,2,1 的和最大,為 6。演算法分析 設dp i 表示以第i個數結尾的子陣列的最大和,那麼只...
力扣53 最大子序和
給定乙個整數陣列 nums 找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例 輸入 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6。法一 利用二級指標申請乙個二維陣列 a int malloc sizeof int m fo...
53 最大子序和 力扣(LeetCode)
給定乙個整數陣列 nums 找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例 輸入 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6。這裡使用的是動態規劃的方法。sums i 表以nums i 結尾的連續子串行的最大值 則有以...