Delete and Earn LeetCode solution in Python
1class Solution:2def deleteAndEarn(self, nums: List[int]) -> int:3count = Counter(nums)4m = max(nums)5memo = {}67def choose(num):8if num > m:9return 010if num not in count:11count[num] = 012if num in memo:13return memo[num]14memo[num] = max(choose(num + 1), num * count[num] + choose(num + 2))15return memo[num]1617return choose(1)181920# time and space complexity21# n = max(nums)22# time: O(n)23# space: O(n)