微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

[Swift Weekly Contest 112]LeetCode948. 令牌放置 | Bag of Tokens

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,losing token[i] power,and gaining 1 point.
  • If we have at least 1 point,we may play the token face down,gaining token[i] power,and losing 1point.

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:

  1. tokens.length <= 1000
  2. 0 <= tokens[i] < 10000
  3. 0 <= P < 10000

你的初始能量为 P,初始分数为 0,只有一包令牌。

令牌的值为 token[i],每个令牌最多只能使用一次,可能的两种使用方法如下:

  • 如果你至少有 token[i] 点能量,可以将令牌置为正面朝上,失去 token[i] 点能量,并得到 1 分。
  • 如果我们至少有 1 分,可以将令牌置为反面朝上,获得 token[i] 点能量,并失去 1 分。

在使用任意数量的令牌后,返回我们可以得到的最大分数。

示例 1:

输入:tokens = [100],P = 50
输出:0

示例 2:

输入:tokens = [100,P = 150
输出:1

示例 3:

输入:tokens = [100,P = 200
输出:2

提示

  1. tokens.length <= 1000
  2. 0 <= tokens[i] < 10000
  3. 0 <= P < 10000
76ms
 1 class Solution {
 2     func bagOfTokensscore(_ tokens: [Int],_ P: Int) -> Int {
 3         var tokens = tokens.sorted(by:<)
 4         var P = P
 5         if tokens.count == 0 || P < tokens[0]
 6         {
 7             return 0
 8         }
 9         var n:Int = tokens.count
10         var p:Int = 0
11         var point:Int = 0
12         var ret:Int = 0
13         for i in 0...n
14         {
15             if i > 0
16             {
17                 P += tokens[n-i]
18                 point -= 1
19             }
20             while(p < n-i && P >= tokens[p])
21             {
22                 P -= tokens[p]
23                 point += 1
24                 p += 1
25             }
26             if p <= n-i
27             {
28                 ret = max(ret,point)
29             }
30         }
31         return ret
32     }
33 }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐