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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Leetcode-53 Maximum Subarray

發(fā)布時(shí)間:2024/4/17 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Leetcode-53 Maximum Subarray 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

#53.?? Maximum Subarray

Find the contiguous subarray within an array (containing at least one number) which has the largest sum.

For example, given the array [-2,1,-3,4,-1,2,1,-5,4],
the contiguous subarray [4,-1,2,1] has the largest sum = 6.

題解:動(dòng)態(tài)規(guī)劃解這題,假設(shè)max_sum記錄了前k個(gè)元素的最大子序列和,這時(shí)添加第k+1個(gè)元素,由于是連續(xù)子序列這個(gè)限制,所以如果k+1這個(gè)元素之前的和是小于0的,那么對(duì)于增大k+1這個(gè)元素從而去組成最大子序列是沒有貢獻(xiàn)的,所以可以把sum 置0。舉個(gè)例子,-1, -2 ,4, -5, 7這里假定7為第k+1個(gè)元素,那么很明顯可以看出,之前的sum = -5 + 4 =-1,那么這樣對(duì)于7來說只會(huì)減少它,所以直接置sum = 0, 0 + 7才能得到正確的答案。再拓展這個(gè)數(shù)組, -1, -2, 4, -5, 7, 1 這里1之前的sum = 7 > 0,對(duì)于后面的1來組成最大子序列是有貢獻(xiàn)的,所以sum = 7 + 1 =8。再注意一點(diǎn),只要sum不減到負(fù)數(shù),中間出現(xiàn)小于0的元素是沒關(guān)系的,sum仍然可以繼續(xù)累加。

即臨時(shí)sum[k+1]=max{nums[i],nums[i]+sum[k]},用max_sum存儲(chǔ)最大的子序列和不斷更新即可。

class Solution { public:int maxSubArray(vector<int>& nums) {if(nums.size()==0)return 0;int sum=nums[0];int max_sum=sum;for(int i=1;i<nums.size();i++){sum=max(nums[i],sum+nums[i]);max_sum=max(sum,max_sum);}return max_sum;} };

?

轉(zhuǎn)載于:https://www.cnblogs.com/fengxw/p/6083786.html

總結(jié)

以上是生活随笔為你收集整理的Leetcode-53 Maximum Subarray的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。