LeetCode 404.左葉子之和
阿新 • • 發佈:2020-12-06
給定一個整數陣列 nums,找到一個具有最大和的連續子陣列(子陣列最少包含一個元素),返回其最大和。
示例:
輸入: [-2,1,-3,4,-1,2,1,-5,4]
輸出: 6
解釋:連續子陣列[4,-1,2,1] 的和最大,為6。
基本思路:貪心演算法,在計算連續子序列x時,設該序列有兩部分構成x1和x2,且x=x1+x2,若開始的子序列元素x1和為負值,即x1<0,那麼x=x1+x2<x2;所以遇到開始的子序列和為負值時直接捨棄。
int maxSubArray(vector<int>& nums) { int ans=nums[0],sum=0; //ans=nums[0],防止全是負數的情況 for(int i=0;i<nums.size();i++){ sum+=nums[i]; ans=max(sum,ans); if(sum<0) sum=0; } return ans; }