def max_subarr(arr)
start_index, end_index = 0,
(0...arr.length).inject([arr.first]) do |max_sub, i|
(i...arr.length).each do |x|
if max_sub.inject(:+) < arr[i..x].inject(:+)
max_sub = arr[i..x]
start_index, end_index = i, x
end
end
max_sub
end
return [start_index, end_index]
end
max_subarr([98, -99, 198, -2, 950]) # => [2,4]
Könnte jemand erklären, warum wir die letzten max_sub
müssen, wenn wir die max_sub = arr[i..x]
in der verschachtelten Schleife haben? Und die Funktion inject([arr.first]) do |max_sub, i|
Ruby-verschachtelte Schleife injiziert
Ich ziehe 'each_with_object' über' inject' gerade weil ich den neuen Wert von Memo nicht merken müssen zurückkehren :) –
@DigitalRoss so max_sub = arr [i..x] zurückkehren würde in der Schleife von (i ... arr.length) .je do | x |. Und die letzte max_sub würde den Wert bak k zurückliefern auf (0 ... arr.length) .inject ([arr.first]) do | max_sub, i | ?? Ich dachte, der Wert würde zugewiesen und zurückkommen, da max_sub = arr [i..x] – paulsus
@paulsus, an dieser Stelle, wenn Sie weitere Fragen haben, sollten Sie die Dokumente lesen. Wahrscheinlich hättest du das vor dem Posten tun sollen, lol. – DigitalRoss