Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum. - Codeprg

Breaking

programing News Travel Computer Engineering Science Blogging Earning

Thursday, 6 August 2020

Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.

Given an integer array nums, find the contiguous sub array (containing at least one number) which has the largest sum and return its sum.

    Maximum Subarray


Given an integer array nums, find the contiguous sub array (containing at least one number) which has the largest sum and return its sum.

Example:

Input: [-2,1,-3,4,-1,2,1,-5,4],
Output: 6
Explanation: [4,-1,2,1] has the largest sum = 6.

Follow up:

If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.


class Solution {
public:
    int maxSubArray(vector<int>& nums) {
       int global=*max_element(nums.begin(),nums.end()), curr=0;
        if(global<0)
            return global;
        for(int i:nums)
        {
            curr=curr+i;//is better than curr+=i;
            if(global<curr)// is better than global=max(global,curr)
                global=curr;
            if(curr<0)
                curr=0;
        }
        return global;
    }
};