题目:​​原题链接​(中等)

标签:动态规划

解法

时间复杂度

空间复杂度

执行用时

Ans 1 (Python)

O ( N )

O ( N )

56ms (97.08%)

Ans 2 (Python)

Ans 3 (Python)

解法一:

class Solution:
def deleteAndEarn(self, nums: List[int]) -> int:
if not nums:
return 0

lst = [0] * (max(nums) + 1)
for num in nums:
lst[num] += num

if len(lst) <= 3:
return max(lst)

dp = [0] * len(lst)
dp[1], dp[2] = lst[1], lst[2]
for i in range(2, len(lst)):
dp[i] = max(dp[i - 1], dp[i - 2] + lst[i])
return dp[-1]