Day 9 Leet code series, today we will be picking the problem Maximum Subarray (https://leetcode.com/problems/maximum-subarray/).
Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.
A subarray is a contiguous part of an array.
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 = [5,4,-1,7,8] Output: 23
Kadane’s algorithm
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int maxSoFar = INT_MIN;
int maxEndingHere = 0;
for(int i=0;i<nums.size();i++){
maxEndingHere = maxEndingHere + nums[i];
if(maxEndingHere > maxSoFar ){
maxSoFar = maxEndingHere;
}
if(maxEndingHere < 0){
maxEndingHere = 0;
}
}
return maxSoFar;
}
};

Leave a comment