Pattern
Pattern
Pattern
Store best answers for prefixes, positions, or remaining amounts.
Define dp[i] as the answer for a prefix or state ending at i.
dp = [0] * (len(nums) + 1)
dp[0] = 0
dp[1] = nums[0]
for i in range(2, len(nums) + 1):
take = dp[i - 2] + nums[i - 1]
skip = dp[i - 1]
dp[i] = max(take, skip)
answer = dp[-1]