Maximum Subarray

来源:互联网 发布:十一双十一淘宝 编辑:程序博客网 时间:2024/06/05 11:58

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.


注解:查找最大连续子串

解:遍历数组,记录当前位置之前的最大连续子串和,若nums[i]加入到连续子串尾的和小于nums[i],则当前最大子串为以nums[i]开头的子串


int maxSubArray(vector<int>& nums) {    int n = nums.size();    if( n == 0 )        return 0;        int res = nums[0], sum = nums[0];        for( int i = 1; i < n; ++i )    {        sum += nums[i];        if( nums[i] >= sum )            sum = nums[i];                if( sum > res )            res = sum;    }    return res;}


原创粉丝点击