2
我有一個由連續的增量(+1)序列組成的數組。這裏有三個序列的例子:返回序列中的第一個和最後一個元素
sequences = [2,3,4,7,12,13,14,15]
我試圖獲得每個序列的第一個和最後一個元素,並返回一個數組與這些值。從上面的陣列,其結果應該是這樣的:我來了,我認爲會工作這個美麗天真的解決方案
[[2,4][7,7][12,15]]
,但它只返回第一個序列。任何想法爲什麼?和/或任何建議更好的解決方案?
new_array = []
start_point = sequences[0]
end_point = sequences[0]
sequences.map do |element|
if element == end_point + 1
end_point = element
elsif element == end_point
next
else
new_array << [start_point, end_point]
startpoint = element
end_point = element
end
end
return new_array
在C語言中思考,但在Ruby中寫作,你應該得到一些獎勵!但是,在Ruby中這樣做通常會導致代碼效率非常低下。相反,只要有可能,就可以使用像map,inject,tap和select這樣的內置函數式編程方法。所有這些方法都是用C語言實現的,因此解釋器在執行算法時要做的事情要少得多。 – Sean