3186. 施咒的最大总伤害

题目链接 3186. 施咒的最大总伤害
思路 动态规划-打家劫舍(值域版)-简单变体
题解链接 【套路】值域打家劫舍(Python/Java/C++/Go)
关键点 1. 排序 2. 对可选数字进行“打家劫舍”
时间复杂度 O(nlogn)
空间复杂度 O(n)

代码实现:

class Solution:
def maximumTotalDamage(self, power: List[int]) -> int:
cnt = Counter(power)
cnt_sorted = sorted(cnt.keys())
@cache
def dfs(i: int):
if i < 0:
return 0
num = cnt_sorted[i]
j = i
while j and cnt_sorted[j-1] >= num-2:
j -= 1
return max(
dfs(i-1),
dfs(j-1) + num * cnt[num]
)
return dfs(len(cnt_sorted)-1)
posted @   WrRan  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
点击右上角即可分享
微信分享提示