leetcode--53. 最大子序和
生活随笔
收集整理的這篇文章主要介紹了
leetcode--53. 最大子序和
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給定一個整數數組?nums?,找到一個具有最大和的連續(xù)子數組(子數組最少包含一個元素),返回其最大和。
示例:
輸入: [-2,1,-3,4,-1,2,1,-5,4], 輸出: 6 解釋:?連續(xù)子數組?[4,-1,2,1] 的和最大,為?6。進階:
如果你已經實現復雜度為 O(n) 的解法,嘗試使用更為精妙的分治法求解。
思路:
令dp[i]表示以nums[i]作為末尾的連續(xù)序列的最大和,求解dp中的最大值
dp[i]只有兩種情況:
(1)序列只有一個元素,就是nums[i]
(2)序列有多個元素,從某個元素nums[p]開始(p<i),一直到nums[i]結尾。
第一種情況,最大和就是nums[i]
第二種情況,為dp[i-1]+nums[i]
邊界為dp[0]=nums[0];
轉移方程為求兩種情況中的最大值 dp[i] = max(dp[i-1]+nums[i],nums[i])
class Solution { public:int maxSubArray(vector<int>& nums) {int size = nums.size();vector<int> dp(size, 0);dp[0] = nums[0];for(int i = 1; i < size; i++){dp[i] = max(nums[i], dp[i-1]+nums[i]);}int k = 0;for(int i = 0; i < size; i++){if(dp[i] > dp[k]){k = i;}}return dp[k];} };?
總結
以上是生活随笔為你收集整理的leetcode--53. 最大子序和的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcode--70. 爬楼梯
- 下一篇: PAT甲级 -- 1005 Spell