House Robber II
Problem Link: https://leetcode.com/problems/house-robber-ii/
class Solution:
def rob(self, nums: List[int]) -> int:
def fun(nums):
n=len(nums)
dp=[0]*(n)
dp[0]=nums[0]
if(n==0):
return nums[0]
dp[1]=max(nums[0],nums[1])
if(n==1):
return nums[1]
for i in range(2,n):
inc=nums[i]+dp[i-2]
exc=dp[i-1]
dp[i]=max(inc,exc)
return dp[n-1]
n=len(nums)
if(n==1):
return nums[0]
elif(n==2):
return max(nums[0],nums[1])
else:
# Think why?
return max(fun(nums[1:]),fun(nums[:n-1]))
Last updated