diff --git a/0198-house-robber/0198-house-robber.py b/0198-house-robber/0198-house-robber.py new file mode 100644 index 0000000..a60bc6e --- /dev/null +++ b/0198-house-robber/0198-house-robber.py @@ -0,0 +1,25 @@ +class Solution(object): + def rob(self, nums): + """ + :type nums: List[int] + :rtype: int + """ + if len(nums) == 1: + return nums[0] + + # Subproblem: only nums 0 to i exist and i is always robbed + dp = [0] * len(nums) + + for i, money in enumerate(nums): + if i == 0 or i == 1: + dp[i] = nums[i] + continue + + if i == 2: + dp[i] = nums[i] + dp[i - 2] + continue + + dp[i] = nums[i] + max(dp[i - 2], dp[i - 3]) + + return max(dp[-1], dp[-2]) + \ No newline at end of file