Pequeña aplicación de algoritmo codicioso.

Después de leer la pregunta, pensé en cómo encontrar el número mínimo de operaciones para cada cambio. La matriz está desordenada al principio, por lo que no hay forma de entender claramente la cantidad de operaciones, así que primero ordene la matriz, después de ordenar , Verifique si cada número es mayor que el anterior, satisfará el operando más pequeño, la prueba es la siguiente:
Suponiendo que la matriz A está ordenada, entonces el número anterior debe ser menor que el siguiente, si un determinado número quiere convertirse El número diferente al anterior debe agregarse todo el tiempo. En este momento, teniendo en cuenta que el último número puede convertirse en el número que desea que sea más rápido, pero el número que omitimos debe convertirse en un número mayor. Entonces, el resultado anterior es verdadero: el
código es el siguiente

    public int minIncrementForUnique(int[] A) {
        Arrays.sort(A);
        int res=0;
        for(int i=1;i<A.length;i++){
            if(A[i]>A[i-1]) continue;
            res=res+A[i-1]+1-A[i];
            A[i]=A[i-1]+1;
        }
        return res;
    }

 

17 artículos originales publicados · elogiados 0 · visitas 153

Supongo que te gusta

Origin blog.csdn.net/qq_33286699/article/details/105030989
Recomendado
Clasificación