C++ Online Compiler
Example: in C++
C
C++
C#
Java
Python
PHP
main.cpp
STDIN
Run
// Basic structure for a Kadane's algorithm implementation int kadane(const std::vector<int>& arr, int& start, int& finish) { int max_so_far = INT_MIN; // Use INT_MIN to handle all negative numbers int current_max = 0; int current_start = 0; start = -1; finish = -1; for (int i = 0; i < arr.size(); ++i) { current_max += arr[i]; if (current_max > max_so_far) { max_so_far = current_max; start = current_start; finish = i; } if (current_max < 0) { current_max = 0; current_start = i + 1; } } // Special case: if all numbers are negative, Kadane's standard logic might // return 0 or an incorrect index. We need the largest (least negative) single element. if (start == -1) { // This happens if all numbers were negative and current_max never became positive max_so_far = arr[0]; start = 0; finish = 0; for (int i = 1; i < arr.size(); ++i) { if (arr[i] > max_so_far) { max_so_far = arr[i]; start = i; finish = i; } } } return max_so_far; }
Output
Clear
ADVERTISEMENTS