题解 | #打家劫舍(二)# python3 假设两种情况

打家劫舍(二)

https://www.nowcoder.com/practice/a5c127769dd74a63ada7bff37d9c5815

# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param nums int整型一维数组 
# @return int整型
#
class Solution:
    def rob(self , nums: List[int]) -> int:
        n = len(nums)
        if n == 1:
            print(0)
            return nums[0]
        if n == 2 and nums[0]>nums[1]:
            print(1)
            return nums[0]
        elif n == 2 and nums[0]<=nums[1]:
            print(2)
            return nums[1]
             
        # write code here
        sum_money = 0
        
        #偷最后一个,第一个绝对不能偷
        n1=n
        dp1 = [0]*n1
        sum_money1 = 0
        dp1[1] = nums[1]
        dp1[2] = nums[2]

        for i in range(3,n):
            dp1[i]=max(dp1[i-1],nums[i]+dp1[i-2])
        sum_money1 = dp1[n1-1]
        
        #不偷最后一个
        n2 = n
        dp2 = [0]*n2
        sum_money2 = 0
        dp2[0] = nums[0]
        dp2[1] = nums[1]

        for i in range(2,n-1):
            dp2[i]=max(dp2[i-1],nums[i]+dp2[i-2])
        sum_money2 = dp2[n2-2]
        print(3)
        return max(sum_money1,sum_money2)

全部评论

相关推荐

12-15 19:41
已编辑
广东工业大学 前端工程师
smile丶snow:尽量保证的一张a4纸吧。为什么工作经历只有公司?如果项目经历是工作里面的,应该写到工作经历里的吧。没有写项目职责,项目全是一个人写的吗?标题大小也好怪。两个项目的分割看不出来是,它和那些项目成功字体是一样大的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务