Encontrar el número de ocurrencias de matriz más de la mitad de la longitud de la matriz (aplicación Java)

El número de veces (aplicación Java) Más de la mitad de la matriz aparece

Título Descripción
serie El número de veces que aparece un número 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.

Ideas de resolución de problemas

Hay un número de serie apariencia variedad más de la mitad, lo que significa que el número de veces que aparece el aspecto que todos los otros números y más grande. Así podemos ahorrar dos valores en el tiempo a través de la matriz, uno es el número actual, un número de veces que aparece numéricas. Y actualmente almacenados bajo el mismo número si la matriz, los tiempos ++ o veces-. Si los tiempos == 0, el siguiente número se guarda, y los tiempos establece en 1. Debido a que existe un mayor número de la mitad del número de todos será capaz de asegurar que esta es la última vez que el número de veces que se establece en el número 1.
Cabe señalar que los resultados obtenidos de esta manera, no garantiza la existencia de tales números, todos necesitamos para determinar si las conclusiones de esta condición se cumple, si no se nota no existe. (Ejemplo: [1,1,1,2,2,2,3], el resultado final es de tres, pero el número no exceda de 3 aparece medio)

la implementación del código

public class Solution {
    public int MoreThanHalfNum_Solution(int [] array) {
        int length = array.length;
        int result = array[0];
        int times = 1;
        for(int i = 1; i < length; i++) {
            if(times == 0) {
                result = array[i+1];
                times = 1;
            }
            else if(array[i] == result) {
                times++;
            }
            else if(array[i] != result) {
                times--;
            }
        }
        times = 0;
        for(int i = 0; i < length; i++) {
            if(array[i] == result) {
                times++;
            }
        }
        if(times > length/2) {
            return result;
        }
        else 
            return 0;
    }
}

Publicados 254 artículos originales · ganado elogios 23 · Vistas a 50000 +

Supongo que te gusta

Origin blog.csdn.net/qq_30242987/article/details/104759409
Recomendado
Clasificación