配列に別の配列の値が含まれていますか? 質問する

配列に別の配列の値が含まれていますか? 質問する

配列に 2 番目の配列の要素が含まれているかどうかをテストする最も効率的な方法は何ですか?

以下の 2 つの例では、質問に答える際に、次foodsの要素のいずれかが含まれていますcheeses

cheeses = %w(chedder stilton brie mozzarella feta haloumi reblochon)
foods = %w(pizza feta foods bread biscuits yoghurt bacon)

puts cheeses.collect{|c| foods.include?(c)}.include?(true)

puts (cheeses - foods).size < cheeses.size

ベストアンサー1

(cheeses & foods).empty?

Marc-André Lafortune がコメントで述べたように、&は線形時間で動作しますが、any?+ はinclude?二次時間になります。データ セットが大きい場合、線形時間は速くなります。Lee Jarvis の回答に示されているように、データ セットが小さい場合、 any?+ は高速になる可能性があります。これはおそらく、 が新しい配列を割り当てるのに対し、別のソリューションは割り当てず、ブール値を返す単純なネストされたループとして機能するためです。include?&

おすすめ記事