-2
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]
有人能解釋爲什麼我們需要的最後max_sub
當我們在嵌套循環的max_sub = arr[i..x]
?並且,功能inject([arr.first]) do |max_sub, i|
紅寶石注入嵌套循環
我喜歡'each_with_object'了'正是inject'因爲我並不需要記住返回備忘錄的新價值:) –
@DigitalRoss所以max_sub = ARR [i..x]會返回在(i ... arr.length)循環中.each do | x |。並且,最後一個max_sub會將值bac k返回到(0 ... arr.length).inject([arr.first])do | max_sub,i | ??我一直認爲價值將被分配,並返回自max_sub = arr [i..x] – paulsus
@paulsus,在這一點上,如果你還有其他問題,你應該閱讀文檔。可以說,你應該在發佈之前做到這一點,哈哈。 – DigitalRoss