Mais da metade da matriz 28. Os números aparecem
título Descrição
Um pensamento:
Classificação de uma matriz para determinar o meio da repetição dos elementos se mais do que a metade do comprimento da matriz, se mais do que é, ou não está
. 1 importação java.util.Arrays; 2 pública classe Solução { 3. Público int MoreThanHalfNum_Solution ( int [] Matriz) { 4. IF (Array == nulo || ser array.length == 0 ) { 5. Retorno 0 ; . 6 } . 7 // Ordenar 8. Arrays.sort (array); . 9 // número de elementos do estatístico médio de 10 int Centro = array [ser array.length / 2 ]; . 11 int CNT = 0 ; 12 está para ( int I = 0 ; I <ser array.length; i ++ ) { 13 é SE (Array [I] == Center) { 14 CNT ++ ; 15 } 16 } . 17 18 é // se mais do que a metade da saída, ou não existem 19. retorno (CNT> ser array.length / 2 ) Centro :? 0 ; 20 é } 21 é }
Pensamento dois:
A ideia de utilizar posições de ataque e defesa:
o primeiro dígito como as posições defensivas primeiro soldado; contagem = 1;
apresentando os mesmos elementos, contar ++;
encontrar os mesmos elementos, que é o inimigo, matriz, count--; quando a contagem de cara é 0, novamente valor i como os novos soldados posições defensivas, continuam a permanecer na última posição sobre os soldados, não é provável que seja o elemento principal.
Mais um ciclo, o número de registros para ver se o soldado é maior do que a matriz geral pode ser.
1 java.util.Arrays importação; 2 pública classe Solução { 3 pública int MoreThanHalfNum_Solution ( int [] array) { 4 se (matriz == nulo || array.length == 0 ) { 5 retorno 0 ; 6 } 7 int soldado = matriz [ 0 ]; 8 int contagem = 1 ; 9 para ( int i = 1 ; i <array.length; i ++ ) { 10 se(matriz de [i] == soldado) { 11 contagem ++ ; 12 } else { 13 count-- ; 14 se (contagem == 0 ) { 15 soldado = matriz [i]; 16 count ++ ; 17 } 18 } 19 } 20 count = 0 ; 21 para ( int i = 0 ; i <array.length; i ++ ) { 22 se (matriz [i] == soldado) { 23 contagem ++ ; 24 } 25 } 26 de retorno (count> array.length / 2 )? soldado: 0 ; 27 } 28 }