Witam, mam do napisania program wyświetlający wszystkie elementy, które pojawiają się najczęściej w tablicy.
W pierwszej pętli for zliczam ile najczęściej występuje jakiś element (max - maksymalna liczba wyświetleń). W drugiej pętli for sprawdzam, które elementy tablicy pojawiły się max razy. Te elementy chcę zapisać w tablicy 'tab'. Jednak tutaj popełniam błąd, ponieważ chcę uzyskać [5, 7] a wyświetla się [5, 7, 5, 7, 7, 5, 7, 5]. Błąd zaczyna się gdzieś w pętlach od linijki "int k=0" jednak nie umiem tego naprawić, proszę o pomoc.
int[] tablica = {4,5,7,6,3,5,7,8,7,5,7,5,8,4,3};
int max = 0;
int element = tablica[0];
int[] tab = {};
for (int i = 0; i < tablica.length; i++) {
int licznik = 0;
for (int j = 0; j < tablica.length; j++) {
if (tablica[i] == tablica[j]) {
licznik++;
}
}
if (licznik > max) {
max = licznik;
}
}
for (int i = 0; i < tablica.length; i++) {
int licznik = 0;
for (int j = 0; j < tablica.length; j++) {
if (tablica[i] == tablica[j]) {
licznik++;
}
}
if (licznik == max) {
element = tablica[i];
int[] tab1 = new int[tab.length+1];
int k=0;
for (; k < tab.length; k++) {
tab1[k] = tab[k];
}
for (int e : tab1) {
if (element != e) {
tab1[k] = element;
}
}
tab = tab1;
}
}
System.out.println(Arrays.toString(tab));