198. House Robber
Question: House Robber
Solution
想法:
現在搶奪金額,會是前兩家 i - 2或是前三家 i - 3,選大的 max(nums[i - 2], nums[i - 3]),加上現在房子裡的金額 nums[i]
要搶奪最多錢錢,就是挑當前搶完最多的,當前搶完最多的,會跟前兩家、前三家搶奪最多的有關
class Solution:
def rob(self, nums: list[int]) -> int:
if len(nums) == 1:
return nums[0]
elif len(nums) == 2:
return max(nums[0], nums[1])
pre1, pre2 = 0, nums[0]
for i in range(2, len(nums)):
nums[i] += max(pre1, pre2) # 前兩家、前三家
pre1, pre2 = nums[i - 2], nums[i - 1]
return max(nums[-1], nums[-2])
class Solution:
def rob(self, nums: list[int]) -> int:
rob1, rob2 = 0, 0
for n in nums:
rob1 , rob2 = rob2, max(rob1 + n, rob2)
return max(rob1, rob2)

Comments
Post a Comment