0
下面的代碼應該找到arr_1
中arr_2
中缺少的數字。比較Ruby中陣列的最有效方法
def compare_1 (arr_1, arr_2)
output = []
temp = arr_2.each_with_object(Hash.new(0)) { |val, hsh| hsh[val] = 0 }
arr_1.each do |element|
if !temp.has_key? (element)
output << element
end
end
puts output
end
def compare_2 (arr_1, arr_2)
out = []
arr_1.each do |num|
if (!arr_2.include?(num))
out << num
end
end
puts out
end
根據'基準',第一種方法更快,大概是通過使用散列。有沒有更好的方法來寫這些或實現這一目標?
compare_1 times:
0.000000 0.000000 0.000000 ( 0.003001)
compare_2 times:
0.047000 0.000000 0.047000 ( 0.037002)
?你可以做'arr1 - arr2' – SteveTurczyn
數組差異:http://www.ruby-doc.org/core-2.1.1/Array.html#2D-method – Micka
'array_1','array_2'在哪裏? – sawa