- Leetcode 3207. Maximum Points After Enemy Battles
- 1. 解题思路
- 2. 代码实现
- 题目链接:3207. Maximum Points After Enemy Battles
1. 解题思路
这一题的话其实关键在于说是想明白最优策略,事实上这道题的最优策略就是捡着最弱的enemy薅,然后点数不够了就标记一个强的enemy来补充一下点数,从而就能获得最大的点数了。
2. 代码实现
给出python代码实现如下:
class Solution:
def maximumPoints(self, enemyEnergies: List[int], currentEnergy: int) -> int:
enemyEnergies = sorted(enemyEnergies)
n = len(enemyEnergies)-1
ans = 0
while currentEnergy >= enemyEnergies[0] and n > 0:
ans += 1
currentEnergy = currentEnergy - enemyEnergies[0] + enemyEnergies[n]
n -= 1
ans += currentEnergy // enemyEnergies[0]
return ans
提交代码评测得到:耗时522ms,占用内存31.8MB。