Java: elemento con maggior frequenza in una matrice

Tema 100

Scrivere un metodo trovaElementoConMaggioreFrequenzaInMatrice che riceve una matrice di interi M e restituisce l’elemento della matrice che compare più volte.

Ad esempio, sia M la matrice così costituita

1 2 3 7
4 5 2 3
4 2 6 1
5 2 4 6
9 5 4 4

allora trovaElementoConMaggioreFrequenzaInMatrice (M) = 4

 public class tema100 { // creiamo un metodo di supporto con cui calcolare la frequenza di ogni elemento public static int calcolaFrequenza (int[][]M, int k) { int cont = 0; for (int i = 0; i < M.length; i++) { for (int j = 0; j < M[0].length; j++) if(M[i][j] == k) cont++; } return cont; } // creiamo il meotodo conclusivo public static int trovaElementoConMaggioreFrequenzaInMatrice (int[][]M) { // dichiariamo una matrice della stessa dimensione di M in cui memorizzare la // frequenza di ciascun elemento int[][] matriceFrequenze = new int[M.length][M[0].length]; for (int i = 0; i < matriceFrequenze.length; i++) { for (int j = 0; j < matriceFrequenze[0].length; j++) // memorizziamo nella matrice le frequenze degli elementi calcolate col metodo // precedente matriceFrequenze[i][j] = calcolaFrequenza (M, M[i][j]); } //inizializziamo una variabile che useremo nella procedura di ricerca del valore //massimo della // matriceFrequenze int max = 0; // inizializziamo una variabile in cui memorizzeremo l’elemento della matrice // associato alla // frequenza più alta int elementoCorrispondente = 0; for (int i = 0; i < matriceFrequenze.length; i++) { for (int j = 0; j < M[0].length; j++) if( matriceFrequenze[i][j] > max) { max = matriceFrequenze[i][j]; elementoCorrispondente = M[i][j]; } } return elementoCorrispondente; }  /* Applicazione di Prova */  public static void main (String[] args) { int[][] Q = {{1, 2, 3, 7}, {4, 5, 2, 3}, { 4, 2, 6, 1 }, { 5, 2, 4, 6}, {9, 5, 4, 4}}; System.out.println (trovaElementoConMaggioreFrequenzaInMatrice (Q)); } }     

Commenti

commenti