JSFiddle - React, Tailwind, and code Playground
JavaScript
function maxSubarray(A) {
var max_ending_here, max_so_far;
max_ending_here = max_so_far = A[0];
var startIndex = 0, max_start_index = 0, max_end_index = 0;
for(var i = 1;i<A.length;i++) {
if(A[i] >= max_ending_here + A[i]) {
startIndex = i;
max_ending_here = A[i];
}
else {
max_ending_here += A[i];
}
if(max_ending_here > max_so_far) {
max_so_far = max_ending_here;
max_start_index = startIndex;
max_end_index = i;
}
};
alert('max starts at ' + max_start_index + ' max ends at ' + max_end_index);
return max_so_far;
}
alert(maxSubarray([1,2,3,4,-9,6,7,-8,1,9])) // 60
/*
From wikipedia
def max_subarray(A):
max_ending_here = max_so_far = 0
for x in A:
max_ending_here = max(0, max_ending_here + x)
max_so_far = max(max_so_far, max_ending_here)
return max_so_far
*/