LeetCode tiene una pregunta por día 1423. El número máximo de puntos que se pueden obtener

1423. Puntos máximos disponibles

Varias cartas están dispuestas en una fila, y cada carta tiene un punto correspondiente. Puntos Se da una matriz de números enteros cardPoints.

En cada acción, puede tomar una carta desde el principio del final de la línea o, eventualmente, solo tiene que tomar kcartas.

Tus puntos son la suma de los puntos de todas las cartas en tu mano.

Para darle una matriz de números enteros cardPointsy enteros k, devuelva el número máximo de puntos que puede obtener.

Ejemplo 1:

输入:cardPoints = [1,2,3,4,5,6,1], k = 3
输出:12
解释:第一次行动,不管拿哪张牌,你的点数总是 1 。但是,先拿最右边的卡牌将会最大化你的可获得点数。最优策略是拿右边的三张牌,最终点数为 1 + 6 + 5 = 12

Ejemplo 2:

输入:cardPoints = [2,2,2], k = 2
输出:4
解释:无论你拿起哪两张卡牌,可获得的点数总是 4

Ejemplo 3:

输入:cardPoints = [9,7,7,9,7,7,9], k = 7
输出:55
解释:你必须拿起所有卡牌,可以获得的点数为所有卡牌的点数之和。

Ejemplo 4:

输入:cardPoints = [1,1000,1], k = 1
输出:1
解释:你无法拿到中间那张卡牌,所以可以获得的最大点数为 1

Ejemplo 5:

输入:cardPoints = [1,79,80,1,1,1,200,1], k = 3
输出:202

inmediato:

  • 1 <= cardPoints.length <= 10^5
  • 1 <= cardPoints[i] <= 10^4
  • 1 <= k <= cardPoints.length

Método uno: ventana deslizante

Ideas para resolver problemas

  • Sigo pensando en la ventana deslizante, asumiendo adquirir una ktarjeta de izquierda , y la cantidad de puntos en mente para hacerlo pre, por lo que los resultados ans = pre.
  • Luego mueva la "ventana" y reste los puntos de la tarjeta de la izquierda cada vez; sume los puntos de la tarjeta de la derecha para obtener la nueva suma de puntos pre, por lo queans = max(ans, pre)
  • Repita el paso anterior kveces, llegue a la mayor suma de puntos.

Código de referencia

public int maxScore(int[] cardPoints, int k) {
    
    
    int n = cardPoints.length;
    int pre = 0;
    for (int i = 0; i < k; i++) {
    
    
        pre += cardPoints[i];
    }
    int ans = pre;
    for (int i = n - 1; i >= n - k; i--) {
    
    
        pre = pre + cardPoints[i] - cardPoints[k + i - n];
        ans = Math.max(ans, pre);
    }
    return ans;
}

Resultados de la
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_27007509/article/details/113716404
Recomendado
Clasificación