Könnte mich jemand durchmachen, was hier in Kadanes Algorithmus vor sich geht? Wollte mein Verständnis überprüfen. Hier ist, wie ich es sehe.Kadanes Algorithmus erklärt
Sie durchlaufen das Array und jedes Mal, wenn Sie die ans-Variable auf den größten Wert setzen, bis dieser Wert negativ wird, wird ans Null.
Gleichzeitig wird die Summenvariable jedes Mal durch die Schleife überschrieben, bis zum Maximum zwischen zuvor gesehenen Summen oder dem größten 'ans' bisher. Sobald die Schleife fertig ist, haben Sie die bisher größte Summe oder Antwort!
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;
};
Ehrfürchtig habe ich das gemacht und es funktioniert perfekt. Was ist eine gute Möglichkeit, mit einem Array aller negativen Zahlen umzugehen? Ich habe versucht, einen maximalen Negativ-Tracker hinzuzufügen und diesen innerhalb der Schleife mit einem math.min-Vergleich zu setzen/zu überschreiben, aber wenn das Array [-10, -11, -12] wäre, würde -12 anstelle von -10 zurückgegeben: / – devdropper87