首页 > 其他 > 详细

198. 打家劫舍

时间:2020-05-25 09:18:12      阅读:43      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

 直接看代码吧

class Solution {
    public int rob(int[] nums) {
        if(nums.length==0) return 0;
        if(nums.length==1) return nums[0];
        if(nums.length==2) 
        {
            if(nums[0]>nums[1])return nums[0];
            else
            {
                return nums[1];
            }   
        }
        int[] s=new int[nums.length];//s[i]代表从0到下标i这么多的数,所能偷的最高金额
        s[0]=nums[0];//假如只有一个数,显然最大金额为nums[0]
        s[1]=nums[0]>nums[1]?nums[0]:nums[1];//因为不能偷相邻两个元素,所以假如有俩元素,选其中大的那个
        for(int i=2;i<nums.length;i++)
        {
            s[i]=Math.max(s[i-1],s[i-2]+nums[i]);//以s[2]为例,显然s[2]指的是下标为0,1,2,这三个数的最大金额,要么选nums[1],要么同时选nums[0],nums[2]
        }
        return s[nums.length-1];
}
}

  

198. 打家劫舍

原文:https://www.cnblogs.com/lzh1043060917/p/12954729.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!