**Kadane's Algorithm** is one of the algorithms to efficiently find maximum sum of continuous subarray.

Given an array Arr[] of N integers. Find the contiguous sub-array(containing at least one number) which has the maximum sum and return its sum.

**Example 1**:

```
Input:
N = 5
Arr[] = {1,2,3,-2,5}
Output:
9
Explanation:
Max subarray sum is 9
of elements (1, 2, 3, -2, 5) which
is a contiguous subarray.
```

```
class Solution{
// arr: input array
// n: size of array
//Function to find the sum of contiguous subarray with maximum sum.
int maxSubarraySum(int arr[], int n){
int maxSoFar=0,maxTillHere=0;
for(int i=0;i<n;i++){
maxTillHere+=arr[i];
if(maxTillHere>maxSoFar){
maxSoFar=maxTillHere;
}
if(maxTillHere<0){
maxTillHere=0;
}
}
return maxSoFar;
}
}
```

## Top comments (0)