Ich brauche für die Hausaufgaben, um die "populärste" Nummer in einem Array (die Nummer in der höchsten Frequenz) zu bekommen, und wenn es mehrere Nummern mit der gleichen Anzahl von Shows gibt, bekomme ich zufällig eine Nummer. Nach mehr als drei Stunden des Versuchs, und entweder im Internet zu suchen, ist das, was ich habe:
%Vor% Dieser Code funktioniert, berücksichtigt jedoch keinen wichtigen Fall - wenn es mehr als eine Nummer mit der gleichen Anzahl an Shows gibt. Dann bekommst du einfach den ersten.
Zum Beispiel: int[]a = {1, 2, 3, 4, 4, ,5 ,4 ,5 ,5};
Der Code wird 4, da er zuerst angezeigt wird, und es ist nicht zufällig, wie es sein sollte.
Eine andere Sache - da es sich um Hausaufgaben handelt, kann ich ArrayList / Maps und Sachen, die wir noch nicht gelernt haben, nicht verwenden.
Jede Hilfe wäre willkommen.
Da sie Ihnen keine zeitliche Komplexitätsgrenze gegeben haben, können Sie das Problem "brute force" machen, indem Sie das Array N ^ 2 mal scannen. (Disclaimer, dies ist die intuitivste Art und Weise, es zu tun, nicht die schnellste oder die effizienteste in Bezug auf Speicher und CPU).
Hier ist ein Pseudo-Code:
i
im ursprünglichen Array das ursprüngliche Array und inkrementieren Sie das Element im Array occurrence bei i
jedes Mal, wenn die Suche Duplikate des Werts in i
im ursprünglichen Array findet. Auf diese Weise ahmen Sie die Verwendung von Karten mit nur einem anderen Array nach.
Wenn Sie die Sammlung nicht verwenden dürfen, können Sie den folgenden Code versuchen:
%Vor%das ist hart wie die Hölle: D Nach einigen Versuchen, ich denke, ich habe es (Wenn es 2 Nummern mit der gleichen Häufigkeit gibt, wird es zuerst gefunden):
%Vor%-
Hah, dein Code gibt mir eine Idee - du kannst dich nicht nur an die letzte beliebte Nummer erinnern, sondern ich habe herausgefunden, dass sie dort gelöst ist Finden Sie das beliebteste Element im Array int [] :)
EDIT- nach vielen und vielen Jahren: D, das funktioniert gut :) Ich habe 2D int und Integer -Array verwendet - Sie können auch nur int-Array verwenden, aber Sie müssen mehr Länge Array und tatsächliche Werte kopieren, Integer hat Standardwert null, das ist also schneller Viel Spaß mit
%Vor%