Mais de metade dos números para provar oferta de segurança 28. matrizes aparecem

Mais da metade da matriz 28. Os números aparecem

título Descrição

Há um número de número de série que aparece mais de metade do comprimento da matriz, encontrar esse número. Por exemplo, um comprimento da matriz de entrada 9 {1,2,3,2,2,2,5,4,2}. Uma vez que o número 2 aparece cinco vezes, mais de metade do comprimento da matriz na matriz, a saída 2. Se houver 0 saída.

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 }

 

Acho que você gosta

Origin www.cnblogs.com/hi3254014978/p/12588435.html
Recomendado
Clasificación