2016-06-23 11 views
0

Bestimmen Sie die maximale Anzahl aufeinanderfolgender gleicher Elemente in einem Array.Ermitteln Sie die maximale Anzahl aufeinanderfolgender gleicher Elemente in einem Array

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 

p wiederkehrenden (ar

+0

Möchten Sie die maximale Anzahl aufeinander folgender, um zu bestimmen gleiche Elemente in einem bestimmten Array? Ist dies der Fall, ist Ihr erster Satz falsch und Ihr Code ist nicht relevant und daher irreführend. Sie müssen die Frage bearbeiten, um zu klären, was Sie tun möchten. –

Antwort

0

Diese Arbeit sollte

def recurring(arr) 
    elements = arr.uniq 
    elements.map { |el| arr.count(el) }.max 
end 
0

I übernehmen die Aufgabe ist es, die maximale Anzahl von aufeinanderfolgenden gleichen Elemente in einer bestimmten Anordnung zu bestimmen.

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 wurde in Ruby v2.2 eingeführt.Für frühere Versionen schreiben Sie

arr.chunk { |e| e }.map { |_,a| a.size }.max 

Die Schritte:

enum = arr.chunk(&:itself) 
    #=> #<Enumerator: #<Enumerator::Generator:0x007fbb04943088>:each> 

können wir sehen, was werden Elemente dieses enumerator erzeugt werden, indem sie in ein Array konvertieren:

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 
Verwandte Themen