欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > 198. 打家劫舍

198. 打家劫舍

2024/10/25 1:33:13 来源:https://blog.csdn.net/huanxianxianshi/article/details/142215171  浏览:    关键词:198. 打家劫舍

在这里插入图片描述
思路
遍历的时候,假设当前即为最后一间要偷的房间,当当前为最后一间偷的房间时所获得的最大金额比前一间作为最后偷到的金额还要多,那当前最大金额为当天偷,否则还是偷前一间好
dp[i]代表第i天偷的情况下能获得的最大利润
当len(nums)>2时才会有隔邻偷,所以之前先处理 长度1、2情况
假设:[1,2,3,1]
最后一间为第一个 则能获得最大金额 dp[0]=1
最后一间为第二个 此时,当天能偷的最大金额为2.比前一天偷得还要大(2>1)即 dp[1]=2
最后一间为第三个 此时 可以偷第三间+第一间(偷第一间能获得最大利润为1)=3+1=4>dp[1],所以dp[2]=4
最后一间为第4个,除了偷第四间外,可以偷第二间或第1间(偷不相邻即可) ,1+max(dp[1],dp[0]) =1+2=3<4 ,则dp[3]=4

class Solution(object):def rob(self, nums):""":type nums: List[int]:rtype: int"""if len(nums)==1:return nums[0]if len(nums)==2:return max(nums)dp=[0]*len(nums)dp[0] = nums[0]dp[1]=max(nums[0],nums[1])for i in range(2,len(nums)):j=it = dp[j-2]j-=3while j>=0:t= max(t,dp[j])j-=1t+=nums[i]dp[i] =max(dp[i-1],t)return dp[-1]

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com