Maximum Subarray #53 Leetcode Problem #Leetcodeseries

1–2 minutes

read

Problem name: Maximum subarray

Problem statement:

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

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.

Example 1:

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

Example 2:

Input: nums = [1]
Output: 1

Example 3:

Input: nums = [0]
Output: 0

Example 4:

Input: nums = [-1]
Output: -1

Solution: Simple solution using kadane’s algorithm.

class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int max_so_far = nums[0];
        int max_ending_here = nums[0];
        
        for(int i=1;i<nums.size();i++){
            max_ending_here = nums[i] > max_ending_here+nums[i] ? nums[i] : max_ending_here+nums[i]; 
            max_so_far = max_ending_here > max_so_far ? max_ending_here : max_so_far;
        }
        return max_so_far;
    }
};

Leave a comment