首页 > 其他 > 详细

LeetCode 213. 打家劫舍 II

时间:2020-11-01 22:16:45      阅读:37      评论:0      收藏:0      [点我收藏+]
//动态规划,198的升级版
//在于怎样处理 首尾房子,它们之中只能抢一个
//Math(抢首,抢尾)
class Solution {
    public int rob(int[] nums) {
        //没房子
        if(nums.length == 0) return 0;
        //一间房子,没得选,必抢
        if(nums.length == 1) return nums[0];
        //俩间及俩间以上
        return Math.max(rob(nums,0,nums.length - 2),rob(nums,1,nums.length - 1));
    }
    private int rob(int[] nums,int start,int end){
        int pre = 0;
        int cur = 0;
        for(int i = start;i <= end;i++){
            //循环开始时, cur 代表 dp[k - 1]; pre 代表 dp[k - 2];
            // dp[k] = Math.max(dp[k -1],dp[k-2] + num[i])
            int tmp = Math.max(cur,pre + nums[i]);
            pre = cur;
            cur = tmp;
            //循环结束后cur代表dp[k],pre 代表 dp[k - 1];
        }
        return cur;
    }
}

 

LeetCode 213. 打家劫舍 II

原文:https://www.cnblogs.com/peanut-zh/p/13909940.html

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