我有一个列表throw new IllegalArgumentException("No two sum solution");
。
在Ruby中,我如何检查列表是否经常联合"?
示例:[1, 1, 20, 20, 20, 4, 4, 7, 5, 5, 7]
经常联合。
修改的
另一个例子:[2, 2, 150, 150, 150, 70, 70, 70]
不是经常联合因为150不在一起。
答案 0 :(得分:2)
检查下一个元素是否等于当前元素,例如:
p [1, 1, 20, 20, 20, 4, 4, 7, 5, 5, 7].chunk_while(&:==).all? { |e| e.size > 1 }
p [2, 2, 150, 150, 150, 70, 70, 70].chunk_while(&:==).all? { |e| e.size > 1 }
# => false
# => true
编辑:
def some_method(array)
hash = Hash.new(0)
array.each { |e| hash[e] += 1 }
if hash.values.any?(&1.method(:==))
true
else
array.chunk_while(&:==).all? { |e| e.size > 1 }
end
end