前提条件,有一个数组 arr
arr = [1,2,1,3,4,5,3,4,5,3,2,9,8,3,5]
arr 的元素可以是任意 Integer 值,元素个数不定 如何取出 数组中 出现次数超过 5(或者 n)次的元素?
n = 2
arr.inject(Hash.new(0)) { |h, e| h[e] += 1; h }.select { |k, v| v > 2 }.keys
Update: 2 楼的更简洁:),不过效率可能这个更高些。
另一个 O(n) 的方法是用 group_by:
arr.group_by { |e| e }.select { |k, v| v.count > n }.keys