Kadane's Algorithm
Definition:
Kadane's Algorithm is an efficient algorithm to find the maximum sum of a contiguous subarray in an array of integers. It operates by iterating through the array while keeping track of the current subarray sum and the maximum sum encountered so far.
Video Explanation

Characteristics:
- Single-Pass Algorithm:
The algorithm processes the array in a single pass:- It iteratively updates the maximum sum of the subarray ending at each position.
- Linear Time Complexity:
The algorithm runs in O(N) time, where N is the number of elements in the array. - Constant Space Complexity:
It only requires a few extra variables, resulting in O(1) space complexity.
Time Complexity:
- Best Case:
The algorithm processes each element once during the traversal. - Average Case:
It consistently runs in linear time for any arrangement of elements. - Worst Case:
Regardless of the input distribution, the time complexity remains linear.
Space Complexity:
- Space Complexity:
The algorithm uses a constant amount of extra space.
Approach:
The algorithm follows these steps:
- Initialization:
- Initialize two variables
max_currentandmax_globalwith the value of the first element.
- Initialize two variables
- Traverse the Array:
- For each element (starting from the second), update
max_currentas the maximum of the current element or the sum ofmax_currentand the current element. - Update
max_globalto be the maximum ofmax_globalandmax_current.
- For each element (starting from the second), update
- Result:
max_globalholds the maximum sum of the contiguous subarray.
C++ Implementation:
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
// Function to find the maximum sum of a contiguous subarray
int maxSubArray(vector<int>& nums) {
int max_current = nums[0], max_global = nums[0];
for (int i = 1; i < nums.size(); i++) {
// Update max_current to include current element or start fresh from current element
max_current = max(nums[i], max_current + nums[i]);
// Update max_global if the current subarray sum is higher
max_global = max(max_global, max_current);
}
return max_global;
}
};
int main() {
vector<int> nums = {-2, 1, -3, 4, -1, 2, 1, -5, 4};
// Create an instance of Solution class
Solution sol;
// Find the maximum sum of the contiguous subarray
int max_sum = sol.maxSubArray(nums);
// Print the result
cout << "The maximum sum of the contiguous subarray is: " << max_sum << endl;
return 0;
}
Telemetry Integration
Completed working through this block? Sync progress to workspace.