53 Maximum Subarray

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.

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

Solution-O(n):

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int num = nums.size();
        vector<int> sum(num, 0);
        if ( num == 1 ) return nums[0];
        sum[0] = nums[0];
        for ( int i = 1; i <= num-1; i++ ) sum[i] = sum[i-1] + nums[i];
        int min_s = 0, max_s = sum[0];
        for ( int i = 0; i <= num-1; i++ ) {
            max_s = max(max_s, sum[i] - min_s);
            min_s = min(min_s, sum[i]);
        }
        return max_s;
    }
};

Solution-Divide and Conquer:



results matching ""

    No results matching ""