力扣題解 最大子序和

2021-10-03 05:29:12 字數 651 閱讀 2299

題目:

給定乙個整數陣列 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 結尾的連續子串行的最大值 則有以...