2017-09-12 9 views
-1

Ich weiß, es gibt viele Themen über „Die häufigsten Anzahl in einem Array“Die häufigste Bereich von Zahlen in einem Array

Aber ich bin für Code suchen, der mir die häufigste Bereich von Zahlen zeigen in einem Array. Ich konnte dazu kein Thema finden.

Nehmen wir an, es gibt ein Array mit diesen Werten {1, 2, 2, 5, 8, 8, 9, 10} und der Bereich ist + -1 ... am häufigsten Zahlenbereich wäre 8- 10.

Ist das möglich? Kann mir bitte jemand helfen?

+1

Was ist die Zeitbeschränkung? Wie groß darf das Array sein? Welche Zahlen können innerhalb des Arrays sein? – Charles

+2

* "Aber ich suche Code" * - das allein macht diese Frage off-topic. Dies ist kein Code-Service. Die vorgestellte Aufgabe ist sicherlich * möglich *, und wahrscheinlich sogar eine gewaltige Aufgabe, aber ich kann Ihnen versichern, dass niemand hier dies tun wird, bis Sie es wenigstens * versuchen *. Und, wenn Sie stecken bleiben, bringen Sie * spezifische * Fragen dazu, wie Sie versucht haben, dies zu lösen, dies zu debuggen und wo die Dinge scheinbar schief gehen. Wenn es sich bei Ihrer Frage um den * Algorithmus * handelt, geht es nicht darum, Code zu finden, und Sie sollten Ihre Frage aktualisieren. – WhozCraig

+0

Ich verstehe es nicht. In Ihrem Beispiel von {1,2,2,5,8,8,9,10} ist die Zahl 2 so häufig wie 8. Wie haben Sie den Bereich als 8-10 bestimmt? –

Antwort

3

iterieren Ihre Werte-Array und für jeden Wert v, erhöhen die Zählung für den spezifischen Wert v sowie für die Werte +/- 1, das heißt für v-1 und v+1. Suchen Sie dann den Wert mit der höchsten Anzahl, nennen wir diesen Wert v_maxcount; Der Bereich ist dann v_maxcount -1 .. v_maxcount + 1.

+0

Vielleicht nicht die effizienteste Lösung, aber es ist einfach, mit einer 'std :: map ' zu schreiben, die die Frequenz zählt. Ich würde hier anfangen und es profilieren, um zu sehen, ob es die erforderlichen Leistungsziele erfüllt. – user4581301

Verwandte Themen