Schreiben Sie eine mode-Methode in Java zu finden, das am häufigsten vorkommende element in einem array

Die Frage geht:

Schreiben Sie eine Methode namens-Modus, gibt die am häufigsten vorkommende element in einem array von ganzen zahlen. Davon ausgehen, dass das array mindestens ein element und jedes element in dem array hat einen Wert zwischen 0 und 100 inclusive. Bindungen brechen, indem Sie den niedrigeren Wert.

Zum Beispiel, wenn das array übergeben, der die Werte enthält,{27, 15, 15, 11, 27}, deine Methode zurückgeben soll, 15. (Hinweis: möglicherweise möchten Sie Blick auf die Tally-Programm von weiter oben in diesem Kapitel, um eine Vorstellung davon wie dieses problem zu lösen.)

Unten ist mein code, der fast funktioniert, außer für single-element-arrays

public static int mode(int[] n)
{
    Arrays.sort(n);
    
    int count2 = 0;
    int count1 = 0;
    int pupular1 =0;
    int popular2 =0;


    for (int i = 0; i < n.length; i++)
    {
            pupular1 = n[i];
            count1 = 0;    //see edit

        for (int j = i + 1; j < n.length; j++)
        {
            if (pupular1 == n[j]) count1++;
        }

        if (count1 > count2)
        {
                popular2 = pupular1;
                count2 = count1;
        }

        else if(count1 == count2)
        {
            popular2 = Math.min(popular2, pupular1);
        }
    }

    return popular2;
}

Bearbeiten: endlich kapiert. Geändert count1 = 0; zu count1 = 1; alles funktioniert jetzt!

  • +1 für gute Arbeit, bevor die Frage (fast funktioniert, außer für single-element-arrays). Könnte Sie posten Sie Ihre Lösung als Antwort und markieren Sie die richtige Antwort? So können auch andere Leute nicht kommen, um Ihre Frage zu helfen, dachte, es wurde noch nicht beantwortet. Danke.
  • Ich schließe mich @Simon ' s Kommentar, und fügen Sie es, dass die momentan akzeptierte Antwort (Gubatron s) ist fehlerhaft und falsch. Es wird beispielsweise ein Fehler in der Beispiel-input -{27, 15, 15, 11, 27}. Die Länge der counts wird 5, und die Linie counts[n[I]]++ fehl, da es versucht, Inkrement, das element mit dem index 27, die ist out-of-bounds als shridhad Hinweise in einem Kommentar.
  • Ich Stimme mit Simon, würden Sie verschieben die Lösung in der Bearbeitung bis eine Antwort unten? Wir nutzen gerne die Q&A-format hier.
  • Im Rückblick auf diese Frage fast 5 Jahre später, war ich erstaunt, wie weit ich gegangen aus dann. Es war der Anfang von mir switching Karriere, computer-Wissenschaft, und ich hatte keine Kenntnis von Datenstrukturen wie map und set usw. Die fast brute-force-Ansatz gemacht, mich erforschen, effiziente algorithmen während meines Studiums und der Arbeit. es hat mein Leben verändert 🙂
InformationsquelleAutor TonyGW | 2013-03-31
Schreibe einen Kommentar