Every day a Leetcode
解法1:记忆化搜索
选或不选,递归地求最大总奖励。
代码:
#
# @lc app=leetcode.cn id=3180 lang=python3
#
# [3180] 执行操作可获得的最大总奖励 I
#
# @lc code=start
class Solution:
def maxTotalReward(self, rewardValues: List[int]) -> int:
rewardValues.sort()
@cache
def dfs(i: int) -> int:
res = 0
for x in rewardValues:
if i < x:
res = max(res, dfs(i + x) + x)
return res
return dfs(0)
# @lc code=end
结果:
复杂度分析:
时间复杂度:O(nlogn),其中 n 是数组 rewardValues 的长度。
空间复杂度:O(logn),其中 n 是数组 rewardValues 的长度。