可以话费power得到point,可以用point来得到一个token的power。
问可以选取到的最大point
一个显然的策略是:用小的power得到point,再用point取换取大的power,这样就可以买到更多的point的,具体实现可以使用双指针。
public int bagOfTokensScore(int[] tokens, int P) {
Arrays.sort(tokens);
int res = 0;
int point = 0;
int l = 0, r = tokens.length - 1;
while (l <= r) {
if (P >= tokens[l]) {
point++;
res = Math.max(res, point);
P -= tokens[l++];
} else if (point > 0) {
point--;
P += tokens[r--];
} else {
break;
}
}
return res;
}