trabajo informal
Hay un número de serie número que aparece más de la mitad de la longitud de la matriz, encontrar este número. Por ejemplo, una longitud de la matriz de entrada 9 {1,2,3,2,2,2,5,4,2}. Dado que el número 2 aparece cinco veces, más de la mitad de la longitud de la matriz en la matriz, la salida 2. Si hay 0 de salida.
pensamiento
Hora de inicio es muy simple idea es utilizar un bucle for, tomar un tiempo en el primer ciclo de datos, a continuación, utilizar un bucle while, el número de veces que aparece más uno, y ver finalmente que el número es mayor que el valor de la matriz la mitad de la longitud del código es como sigue:
int m=array.length;
int n=m/2;
int i;
for(i=0;i<m;i++){
int k=array[i];
int j=0;
int p=0;
while(j<m)
{
if(array[j]==k)
{
p++;
}
j++;
}
if(p>n)
break;
}
if(i==m)
return 0;
else
return
array[i];
El pensamiento es el comienzo, no pensar demasiado, el blog de escritura de nuevo encontró el tiempo para utilizar el mapa Este conjunto de preguntas es el método más simple, complejidad del tiempo es O (N), utilizando principalmente la colección diagrama característico. En lo personal me siento que para el cálculo de la colección de mapas digitales sigue siendo una gran ventaja.
código
import java.util.*;
public class Solution {
public int MoreThanHalfNum_Solution(int [] array) {
int len=array.length;
int half=len/2;
Map<Integer,Integer> map=new HashMap<>();
for(int i=0;i<len;i++){
map.put(array[i],map.containsKey(array[i])? map.get(array[i])+1:1);
}
for(int i=0;i<len;i++){
if(map.get(array[i])>half){
return array[i];
}
}
return 0;
}
}