我有一个类似[1,1,1,2,4,6,3,3]的数组,我想得到重复元素的列表,在本例中为[1,3].我写了这个:
my_array.select{|obj|my_array.count(obj)>1}.uniq
Run Code Online (Sandbox Code Playgroud)
但它的效率很低(o(n²)).你有更好的主意吗?如果可能简洁.
谢谢
鉴于数组:
arr = ['a','a','b','b','b','a','c']
Run Code Online (Sandbox Code Playgroud)
Ruby 中是否有一种快速方法可以删除重复的连续元素,但并非所有重复元素(如 arr.uniq)都会删除?预期输出将是:
['a','b','a','c']
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的。可以按如下方式遍历 Array,但是在 Ruby 中执行此操作的最简洁方法是什么?
def remove_repeats arr
new_arr = []
last_element = nil
arr.each do |x|
if last_element != x
new_arr << x
end
last_element = x
end
new_arr
end
arr = ['a','a','b','b','b','a','c','c']
puts remove_repeats(arr).join(',')
# => a,b,a,c
Run Code Online (Sandbox Code Playgroud)