seltenes Vorkommen eines Integers in einem Array

bradig

Aktives Mitglied
Gegeben das Array {1,1,4,5,6,2,9,2,9}
* Die Zahlen 4,5 und 6 kommen nur einmal darin vor.
* 6 ist die größte dieser Zahlen, also wird 6 zurückgegeben.

Java:
public   int getRarestNumber(final int[] input) {
int max=Integer.MIN_VALUE;
        int min=Integer.MAX_VALUE;
        for(int i=0;i<input.length;i++){
            int freq=getFrequencyNumber(input,input[i]);
            if(input[i]>max && freq<min){
                max=input[i];
                min=freq;
            }
        }
        return max;
    }

     public  int getFrequencyNumber(final int[] input,int n) {
        int freq=0;
        for(int i=0;i<input.length;i++){
            if(input[i]==n){
                freq++;
            }
        }
        return freq;
    }

etwas klappt in meinem Code nicht.
Bitte um Hilfe

Herzlich
Bradig
 
mr Brown du bist ein Magier.🙂
ich habe einfach < durch <= ersetzt und alles läuft einwandfrei.😀😀.
Wie hast du das so schnell gemerkt?
 
Das ganze geht effizient mit nur einer Schleife, bzw., in O (n).

bis jetzt lässt du für jedes Element eine zusätzliche Schleife los, und wieso sieht das so zerstückelt aus, und (vielleicht unwichtig) wie ist Seltenes Vorkommen definiert?
 
Das Verfahren heißt Countingsort https://de.wikipedia.org/wiki/Countingsort Sortieren in linearer Zeit ist möglich.
Bei deinem Problm. brauchst du nur das Array C (Counts) und musst lediglich einmal von hinten drüberlaufen, und das Erste mit count == 1 ermitteln und als Antwort geben.
Noch 'einen Hinweis: CS arbeitet Out-of-place, der zusätzliche Speicherplatz beträgt aber nur O (n+k), siehe oben.
 

Zurück
Oben