Maximum Subarray (the largest sub-arrays)

Subject description:

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.

    This question is very classic, there are discussions on "Introduction to Algorithms", but there is no description of this method in this paper. This question is not difficult, to write full time to remember to consider the input is negative this situation.

solution:

int maxSubArray(vector<int>& nums) {
    if (nums.empty())
        return INT_MIN;
    int max = nums[0];
    int sum = nums[0];
    for (int i = 1; i < nums.size(); ++i)
    {
        if (sum < 0)
            sum = nums[i];
        else
            sum += nums[i];
        if (sum > max)
            max = sum;
    }
    return max;
}

 

Reproduced in: https: //www.cnblogs.com/gattaca/p/4716012.html

Guess you like

Origin blog.csdn.net/weixin_34255793/article/details/93401837