Directorio de artículos
1. Título
Tu energía inicial es P, la puntuación inicial es 0 y solo hay un paquete de fichas.
El valor del token es token[i]
que cada token solo se puede usar una vez como máximo . Los dos métodos de uso posibles son los siguientes:
- Si tienes al menos un
token[i]
punto de energía, la ficha se puede colocar hacia arriba, perdertoken[i]
puntos de energía y obtener 1 punto. - Si tenemos al menos un punto, el token se puede configurar para retroceder, acceder a
token[i]
energía del punto y perder 1 punto.
Después de usar cualquier número de tokens, devuelve la puntuación máxima que podamos obtener .
示例 1:
输入:tokens = [100], P = 50
输出:0
示例 2:
输入:tokens = [100,200], P = 150
输出:1
示例 3:
输入:tokens = [100,200,300,400], P = 200
输出:2
提示:
tokens.length <= 1000
0 <= tokens[i] < 10000
0 <= P < 10000
Fuente: LeetCode Enlace: https://leetcode-cn.com/problems/bag-of-tokens Los
derechos de autor son propiedad de LeetCode . Para reimpresiones comerciales, comuníquese con la autorización oficial. Para reimpresiones no comerciales, indique la fuente.
2. Resolución de problemas
class Solution {
public:
int bagOfTokensScore(vector<int>& tokens, int P) {
int points = 0, maxPoints = 0, n = tokens.size();
sort(tokens.begin(), tokens.end());
if(n==0 || P < tokens[0])
return 0;
int l = 0, r = n-1;
while(l <= r)
{
if(P >= tokens[l])//能量够,去拿分
{
points++;
P -= tokens[l];//消耗最少的能量
l++;
}
else//能量不够
{
if(points > 0)
{
points--;//花分去获取大能量
P += tokens[r];
r--;
}
else
break;
}
maxPoints = max(points, maxPoints);
}
return maxPoints;
}
};
16 ms 10,4 MB
Mi dirección de blog de CSDN https://michael.blog.csdn.net/
Mantenga presionado o escanee el código QR para seguir mi cuenta oficial (Michael Amin), ¡vengan juntos, aprendan y progresen juntos!