如何有效地提取Ruby数组中的重复元素?

前端之家收集整理的这篇文章主要介绍了如何有效地提取Ruby数组中的重复元素?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > Ruby: How to find and return a duplicate value in array?18个
我有一个类似[1,1,2,4,6,3,3]的数组,我想得到重复元素的列表,在本例中为[1,3].我写了这个:
my_array.select{|obj|my_array.count(obj)>1}.uniq

但它的效率很低(o(n²)).你有更好的主意吗?如果可能简洁.

谢谢

解决方法

灵感来自Ilya Haykinson的回答:
def repeated(array)
  counts = Hash.new(0)
  array.each{|val|counts[val]+=1}
  counts.reject{|val,count|count==1}.keys
end

猜你在找的Ruby相关文章