Más de la mitad de la matriz aparecen 28. Los números
título Descripción
Un pensamiento:
Ordenación de una matriz para determinar el medio de la repetición de elementos si hay más de la mitad de la longitud de la matriz, si más de lo que es, o no es
. 1 java.util.Arrays importación; 2 pública clase Solution { 3. Pública int MoreThanHalfNum_Solution ( int [] Array) { 4. IF (Array == nula || ser Array.length == 0 ) { 5. Retorno 0 ; . 6 } . 7 // Ordenar 8. Arrays.sort (array); . 9 // número de elementos de la estadística media 10 int Center = array [BE Array.length / 2 ]; . 11 int CNT = 0 ; 12 es para ( int I = 0 ; I <ser Array.length; I ++ ) { 13 es SI (Array [I] == Center) { 14 CNT ++ ; 15 } 16 } . 17 18 es // si más de la mitad de la salida, o no existen 19. retorno (CNT> ser Array.length / 2 ) Centro :? 0 ; 20 es } 21 es }
Pensar dos:
La idea de utilizar posiciones ofensivas y defensivas:
el primer dígito como las posiciones defensivas primer soldado; count = 1;
experimentar los mismos elementos, contar ++;
encuentro los mismos elementos, que es el enemigo, matriz, count--; cuando el recuento de cara es 0, nuevo valor de i como las nuevas posiciones defensivas soldados, seguirá siendo en la última posición de los soldados, es probable que sea el elemento principal.
Además de un ciclo, el número de registros para ver si el soldado es mayor que la matriz general puede ser.
1 java.util.Arrays importación; 2 pública clase Solution { 3 público int MoreThanHalfNum_Solution ( int [] array) { 4 si (array == nula || Array.length == 0 ) { 5 retorno 0 ; 6 } 7 int soldado = array [ 0 ]; 8 int count = 1 ; 9 para ( int i = 1 ; i <Array.length; i ++ ) { 10 si(array [i] == soldado) { 11 recuento ++ ; 12 } más { 13 count-- ; 14 Si (recuento == 0 ) { 15 soldado = array [i]; 16 recuento ++ ; 17 } 18 } 19 } 20 count = 0 ; 21 para ( int i = 0 ; i <Array.length; i ++ ) { 22 si (array [i] == soldado) { 23 recuento ++ ; 24 } 25 } 26 de retorno (contador> Array.length / 2 )? soldado: 0 ; 27 } 28 }