参见英文答案 >
Ruby: How to find and return a duplicate value in array?18个
我有一个类似[1,1,2,4,6,3,3]的数组,我想得到重复元素的列表,在本例中为[1,3].我写了这个:
我有一个类似[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