Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions Kadane's Algorithm
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
##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: [-3, -4, 5, -1, 2, -4, 6, -1]
//Output: 8
//Explanation: Subarray [5, -1, 2, -4, 6] is the max sum contiguous subarray with sum 8.

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

//EXAMPLE 3-
//Input: nums = [-2 , 3 , -1 , 2 , -2]
//Output: 4
//Explanation: [3, -1, 2] has the largest sum = 4

#include <algorithm>
#include <iostream>
#include <vector>
#include <climits>

using namespace std;
void maximumSubarraySum(vector<int> arr)
{
int n = arr.size();
int maxSum = INT_MIN, currSum = 0, start = 0, end = 0, s = 0;

for (int i = 0; i < arr.size(); i++)
{
currSum = currSum + arr[i];
if (currSum > maxSum)
{
maxSum = currSum;
start = s;
end = i;
}
if (currSum < 0)
{
currSum = 0;
s = i + 1;
}
}

cout << "Maximum contiguous sum is " << maxSum
<< endl;
cout << "Starting index " << start << endl
<< "Ending index " << end << endl;
}
// Driver's code
int main()
{

vector<int> a = {-2, 3, -1, 2, -2};
maximumSubarraySum(a);
return 0;
}