Czy ktoś mógłby mnie przeprowadzić przez to, co dzieje się tutaj w algorytmie Kadane? Chciałem sprawdzić moje zrozumienie. Oto jak to widzę.Algorytm Kadane'a wyjaśnił:
przechodzisz przez tablicę i za każdym razem, gdy ustawiasz zmienną ans na największą widzianą wartość, aż ta wartość stanie się ujemna, wtedy ans zmieni się na zero.
W tym samym czasie zmienna sumy jest nadpisywana za każdym razem w pętli, do maksimum między poprzednio widziane sumy lub największych "ans" do tej pory. Gdy pętla zostanie zakończona, będziesz mieć największą sumę lub odpowiedź widzianą do tej pory!
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;
};
Awesome zrobiłem to i działa idealnie. Jaki jest dobry sposób radzenia sobie z tablicą wszystkich liczb ujemnych? Próbowałem dodać max tracker negatywny i ustawienie/nadpisanie w pętli z porównaniem math.min, ale jeśli tablica miała wartość [-10, -11, -12], zwracałaby -12 zamiast -10: / – devdropper87