Artigo Diretório
1. Título
Sua energia inicial é P, a pontuação inicial é 0 e há apenas um pacote de fichas.
O valor do token é token[i]
que cada token só pode ser usado uma vez, no máximo . Os dois métodos de uso possíveis são os seguintes:
- Se você tiver pelo menos um
token[i]
ponto de energia, a ficha pode ser colocada com o lado certo para cima, perdertoken[i]
energia de ponto e obter 1 ponto. - Se tivermos pelo menos um ponto, o token pode ser configurado para fazer backup, acessar a
token[i]
energia do ponto e perder 1 ponto.
Depois de usar qualquer número de tokens, retorne a pontuação máxima que podemos obter .
示例 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
Fonte: LeetCode Link: https://leetcode-cn.com/problems/bag-of-tokens Os
direitos autorais são propriedade da LeetCode . Para reimpressões comerciais, favor contatar a autorização oficial Para reimpressões não comerciais, favor indicar a fonte
2. Resolução 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
O endereço do meu blog CSDN https://michael.blog.csdn.net/
Pressione e segure ou escaneie o código QR para acompanhar minha conta oficial (Michael Amin), torcer juntos, aprender e progredir juntos!