leetcode 53. Maximum Subarray

来源:互联网 发布:东莞虎门淘宝摄影 编辑:程序博客网 时间:2024/06/08 04:09

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.

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int Cursum=0;
        int Maxsum=nums[0];
        for(int i=0;i<nums.size();i++)
        {
            Cursum+=nums[i];
            if(Cursum>Maxsum)
                Maxsum=Cursum;
            if(Cursum<0)
                Cursum=0;
        }
        return Maxsum;
        
    }
}

思路:

线性时间算法, 该算法在每次元素累加和小于0时,从下一个元素重新开始累加。cursum表示如果前面的和小于零,后面的这个数肯定不会和前面相加,所以将其置零继续循环。

原创粉丝点击