3

n配列と数百万の要素(データベースID)を交差させる必要があります。このコードは完璧に機能しますが、低速です(非常に大きな配列の場合)。どうすれば改善できますか?

[[1,2,3,4],[2,4,6,8],[4,5,8]].inject([]){|c,v| c = v if c.size==0; c = c&v if c.size>0; c }
4

2 に答える 2

6
[1,2,3,4] & [2,4,6,8] & [4,5,8] #=> [4]

交差法はハッシュを使うので早いはずです。

于 2012-10-05T13:26:10.123 に答える
3

Ruby は交差演算子を提供します。

これを試してみることをお勧めします:

> [[1,2,3,4],[2,4,6,8],[4,5,8]].reduce{ |accum, arr| accum & arr }
=> [4] 

編集:

これはもう少し簡潔に書くことができますが、可読性に問題があります。

[[1,2,3,4],[2,4,6,8],[4,5,8]].reduce(:&)
于 2012-10-05T13:25:31.770 に答える