diff --git a/0198-house-robber/0198-house-robber.py b/0198-house-robber/0198-house-robber.py index a60bc6e..0a3159a 100644 --- a/0198-house-robber/0198-house-robber.py +++ b/0198-house-robber/0198-house-robber.py @@ -4,21 +4,19 @@ class Solution(object): :type nums: List[int] :rtype: int """ - if len(nums) == 1: - return nums[0] + + if len(nums) < 3: + return max(nums) # 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 + dp[0] = nums[0] + dp[1] = nums[1] + dp[2] = nums[2] + nums[0] - if i == 2: - dp[i] = nums[i] + dp[i - 2] - continue + for i in range(3, len(nums)): dp[i] = nums[i] + max(dp[i - 2], dp[i - 3]) return max(dp[-1], dp[-2])