确定给定数组中连续相等元素的最大数量。
arr = [1, 1, 1, 1, 1, 2, 3, 3, 3, 4, 4, 1, 1]
def recurring(arr)
freq = arr.inject(Hash.new(0)) { |h,v| h[v] += 1; h }
freq.max_by { |k,v| v }
end
重复发生(ar
答案 0 :(得分:0)
这应该有效
def recurring(arr)
elements = arr.uniq
elements.map { |el| arr.count(el) }.max
end
答案 1 :(得分:0)
我假设任务是确定给定数组中连续相等元素的最大数量。
def recurring(arr)
arr.chunk(&:itself).map { |_,a| a.size }.max
end
arr = [1, 1, 1, 1, 1, 2, 3, 3, 3, 4, 4, 1, 1]
recurring arr
#=> 5
Object#itself是在Ruby v2.2中引入的。对于早期版本,请写
arr.chunk { |e| e }.map { |_,a| a.size }.max
步骤:
enum = arr.chunk(&:itself)
#=> #<Enumerator: #<Enumerator::Generator:0x007fbb04943088>:each>
我们可以看到这个枚举器通过将它转换为数组来生成哪些元素:
enum.to_a
#=> [[1, [1, 1, 1, 1, 1]], [2, [2]], [3, [3, 3, 3]], [4, [4, 4]], [1, [1, 1]]]
b = enum.map { |_,a| a.size }
#=> [5, 1, 3, 2, 2]
b.max
#=> 5