zoukankan      html  css  js  c++  java
  • 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;
        }
    }

  • 相关阅读:
    【自学php】第三天
    【自学php】第二天
    【自学php】第一天-macbook上配置php
    js数值转换
    js题
    【练习】响应式布局
    6.数据查询
    5.删除数据
    4.更新数据
    3.插入数据
  • 原文地址:https://www.cnblogs.com/xiaxj/p/9692606.html
Copyright © 2011-2022 走看看