码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode——198. 打家劫舍

时间:2018-09-23 16:23:20      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:解决问题   表示   display   []   i+1   描述   one   部分   col   

题目描述:题目链接

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

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

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. 打家劫舍

标签:解决问题   表示   display   []   i+1   描述   one   部分   col   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!