Bag of Tokens
MediumArrayTwo PointersGreedySorting
Solution
export function bagOfTokensScore(tokens: number[], power: number): number {
tokens.sort((a, b) => a - b);
let score = 0;
let maxScore = 0;
let remainPower = power;
let [start, end] = [0, tokens.length - 1];
while (start <= end) {
if (tokens[start] <= remainPower) {
remainPower -= tokens[start];
score += 1;
maxScore = Math.max(maxScore, score);
start += 1;
} else if (1 <= score) {
remainPower += tokens[end];
score -= 1;
end -= 1;
} else {
return maxScore;
}
}
return maxScore;
}