Artikelverzeichnis
1. Titel
Ihre anfängliche Energie ist P, die anfängliche Punktzahl ist 0 und es gibt nur eine Packung Token.
Der Wert des Tokens besteht darin, token[i]
dass jedes Token höchstens einmal verwendet werden kann . Die beiden möglichen Verwendungsmethoden lauten wie folgt:
- Wenn Sie mindestens eine
token[i]
Punkteenergie haben, kann der Token mit der rechten Seite nach oben gesetzt werden, Punkt-Energie verlierentoken[i]
und 1 Punkt erhalten. - Wenn wir mindestens einen Punkt haben, kann der Token so eingestellt werden, dass er sichert, auf
token[i]
die Energie des Zugangspunkts zugreift und 1 Punkt verliert.
Geben Sie nach Verwendung einer beliebigen Anzahl von Token die maximale Punktzahl zurück, die wir erhalten können .
示例 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
Quelle: LeetCode Link: https://leetcode-cn.com/problems/bag-of-tokens Das
Copyright liegt bei LeetCode . Für kommerzielle Nachdrucke wenden Sie sich bitte an die offizielle Genehmigung. Für nichtkommerzielle Nachdrucke geben Sie bitte die Quelle an.
2. Problemlösung
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
Meine CSDN- Blog-Adresse https://michael.blog.csdn.net/
Drücken oder scannen Sie lange den QR-Code, um meinem offiziellen Konto (Michael Amin) zu folgen, zusammen zu kommen, zu lernen und gemeinsam Fortschritte zu machen!