我有一個整數一個這樣的數組:集團整數的範圍的哈希值的陣列和計數
[1, 1, 1, 2, 2, 4, 4, 5, 6, 11, 11, 12, 15, 22, 23, 23, 23, 31, 32, 32]
我試圖將其轉換爲一個哈希,分組根據在10個間隔的範圍。 ...
因此,在這種情況下,它會
{ [1..10] => 9, [11..20] => 4, [21..30] => 4, [31..40] => 3 }
我曾嘗試還沒有接近所以這是一個有點無意義把它們倒在這裏的幾件事情。我可以將數組轉換爲範圍
[1, 1, 1, 2, 2, 4, 4, 5, 6, 11, 11, 12, 15, 22, 23, 23, 23, 31, 32, 32].sort.uniq.inject([]) do |spans, n|
if spans.empty? || spans.last.last != n - 1
spans + [n..n]
else
spans[0..-2] + [spans.last.first..n]
end
end
但是這不是我正在尋找的。有什麼建議麼?
太棒了!非常感謝 – GhostRider
看起來更像O(3n)給我。但是當然,你的解決方案速度更快。 –
對於'your_array = [5,25]',你的解決方案返回'=> {1..10 => 1,21..30 => 1}',而不是'{1..10 => 1,11 ..20 => 0,21..30 => 1}'。如果你的散列是'h',那麼添加'h.default = 0'可能會令人滿意。 –