有人可以带我了解 Kadane 算法中发生的事情吗?想检查我的理解。这就是我的看法。
您正在遍历数组,并且每次将 ans 变量设置为看到的最大值,直到该值变为负数,然后 ans 变为零。
同时,每次循环都会覆盖 sum 变量,直到之前看到的和之间的最大值或迄今为止最大的“ans”。循环完成执行后,您将获得迄今为止看到的最大总和或答案!
var sumArray = function(array) {
var ans = 0;
var sum = 0;
//loop through the array.
for (var i = 0; i < array.length; i++) {
//this is to make sure that the sum is not negative.
ans = Math.max(0, ans + array[i]);
//set the sum to be overwritten if something greater appears.
sum = Math.max(sum, ans)
}
return sum;
};