1. 程式人生 > 實用技巧 >LeetCode 404.左葉子之和

LeetCode 404.左葉子之和

技術標籤:貪心leetcode

53. 最大子序和

給定一個整數陣列 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;

    }