Leetcode——198. 打家劫舍

Posted 大黄奔跑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode——198. 打家劫舍相关的知识,希望对你有一定的参考价值。

题目描述:题目链接

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

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

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. 打家劫舍的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 198. 打家劫舍

LeetCode 198. 打家劫舍

Leetcode 198. 打家劫舍

Leetcode 198. 打家劫舍

LeetCode 198 打家劫舍

我用java刷 leetcode 198. 打家劫舍