Una pregunta por día LeetCode 1561. El número máximo de monedas que puede obtener

1561. El número máximo de monedas que puedes conseguir

Ideas para resolver problemas

Uno, el primer pensamiento después de leer el tema es ordenar la matriz y luego dividir en tres partes iguales, una vez es el montón más pequeño, el montón del medio, el montón más grande y el montón del medio. Resulta que no es la solución óptima. El punto clave es que la pila de monedas que quitas puede ser la pila de monedas en la pila más grande, siempre que haya una pila de monedas más grande que la pila de monedas que le quitaste a Alice, y Bob esté fijo y siempre tome monedas de la pila. pila más pequeña.

Ejemplo 3 ejemplo de análisis

Entonces, después de clasificar, atraviesa los elementos de la matriz en orden descendente, atravesando 2 elementos a la vez, y el elemento más pequeño es el número de monedas tomadas en esta ronda.

El número de recorridos de bucle es de longitud / 3.

Código de resolución de problemas

class Solution {
    public int maxCoins(int[] piles) {

        int result = 0;

        int length = piles.length;

        int index = length - 2;

        int n = length / 3;

        Arrays.sort(piles);

        while(n > 0) {

            result = result + piles[index];

            index = index - 2;

            n--;
        }

        return result;
    }
}

 

Supongo que te gusta

Origin blog.csdn.net/bai_ye_/article/details/108864023
Recomendado
Clasificación