首页 > 其他 > 详细

Leetcode——198. 打家劫舍

时间:2018-09-23 15:42:19      阅读:151      评论:0      收藏:0      [点我收藏+]

题目描述:题目链接

这道题目也是一道动态规划的题目:

分析一道动态规划的题目可以将解决问题的思路分为下面三个部分:

1:问题的描述。可以定义数组d[ i ] 用于表示第i -1家可以获得的最大金额。

2:给出递推公式:d[ i ] = max( d[i-1] , d[i-2] + nums[i] );

3:给出递推公式的初始值:d[0] = nums[0],  d[1] = max( nums[0] , nums[1] );

 

下面可以根据上面的思路给出本题的解决思路:

class Solution {
    public int rob(int[] nums) {
        int len = nums.length;
        if(len == 0){
            return 0;
        }
        if(len == 1){
            return nums[0];
        }
       
        //定义数组d[i]为i+1家可以获得的最大数
        int[] d = new int[len];
        d[0] = nums[0];
        d[1] = Math.max(nums[0],nums[1]);
        if(len == 2){
            return  d[1];
        }
        int max = -1;
        for(int i = 2; i < len ; i++){
            d[i] = Math.max(d[i-1],d[i-2]+nums[i]);
            if(d[i] >= max){
                max = d[i];
            }
        }
        return max;
    }
}

 

 

Leetcode——198. 打家劫舍

原文:https://www.cnblogs.com/xiaxj/p/9692606.html

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