确定给定数组中连续相等元素的最大数量
Posted
技术标签:
【中文标题】确定给定数组中连续相等元素的最大数量【英文标题】:Determine the maximum number of consecutive equal elements in a given array 【发布时间】:2016-06-23 21:20:12 【问题描述】:。
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
【问题讨论】:
您希望吗?如果是这样,您的第一句话是不正确的,并且您的代码不相关,因此具有误导性。您需要编辑问题以阐明您想要做什么。 【参考方案1】:这应该可以工作
def recurring(arr)
elements = arr.uniq
elements.map |el| arr.count(el) .max
end
【讨论】:
【参考方案2】:我假设任务是确定给定数组中连续相等元素的最大数量。
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
【讨论】:
以上是关于确定给定数组中连续相等元素的最大数量的主要内容,如果未能解决你的问题,请参考以下文章