948. Bag of Tokens
阿新 • • 發佈:2018-12-02
You have an initial power P
, an initial score of 0
points, and a bag of tokens.
Each token can be used at most once, has a value token[i]
, and has potentially two ways to use it.
- If we have at least
token[i]
power, we may play the token face up, losingtoken[i]
1
point. - If we have at least
1
point, we may play the token face down, gainingtoken[i]
power, and losing1
point.
Return the largest number of points we can have after playing any number of tokens.
Example 1:
Input:tokens = [100], P = 50 Output: 0
Example 2:
Input: tokens = [100,200], P = 150 Output: 1
Example 3:
Input: tokens = [100,200,300,400], P = 200 Output: 2
Note:
tokens.length <= 1000
0 <= tokens[i] < 10000
0 <= P < 10000
思路:典型的two-pointer
class Solution(object): def bagOfTokensScore(self, tokens, P): """ :type tokens: List[int] :type P: int :rtype: int """ if not tokens: return 0 tokens.sort() if P<tokens[0]: return 0 i,j=0,len(tokens)-1 res=points=0 while i<=j: while i<=j and P>=tokens[i]: points+=1 P-=tokens[i] res=max(res,points) i+=1 points-=1 P+=tokens[j] j-=1 return res s=Solution() print(s.bagOfTokensScore(tokens = [81,91,31], P = 73)) print(s.bagOfTokensScore(tokens = [26], P = 50)) print(s.bagOfTokensScore(tokens = [100], P = 50)) print(s.bagOfTokensScore(tokens = [100,200], P = 150)) print(s.bagOfTokensScore(tokens = [100,200,300,400], P = 200))