CP

198. House Robber

class Solution:
    def rob(self, A: List[int]) -> int:
        n = len(A)
        pre, cur = 0, A[0]

        for i in range(1, n):
            pre, cur = cur, max(pre + A[i], cur)

        return cur
class Solution:
    def rob(self, A: List[int]) -> int:
        n = len(A)

        if n == 1:
            return A[0]

        dp = [0] * n
        dp[0] = A[0]
        dp[1] = max(A[0], A[1])

        for i in range(2, n):
            dp[i] = max(A[i] + dp[i-2], dp[i-1])

        return dp[n-1]