日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

leetcode--53. 最大子序和

發(fā)布時間:2024/2/28 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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. 最大子序和的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。