• 第198题:打家劫舍


    一. 问题描述

    你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。

    给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。

    示例 1:

    输入: [1,2,3,1]

    输出: 4

    解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。

         偷窃到的最高金额 = 1 + 3 = 4 。

    示例 2:

    输入: [2,7,9,3,1]

    输出: 12

    解释: 偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。

         偷窃到的最高金额 = 2 + 9 + 1 = 12 。

    二. 解题思路

    本题思路:采用动态规划的方法进行求解,找到动态转移函数f(n)=max(f(n-1)+m(n),f(n-2)+m(n)),其中f(n)代表前n个房屋所偷盗最大值,而m(n)代表第n个房屋的金额。

    步骤一:根据状态转移函数times,创建一个数组存储每一次可能的最大值。

    步骤二:遍历数组,通过动态转移函数,将每次的最大值计算出来,并将最终最大值存储到maxvalue中,最后输出maxvalue。

    三. 执行结果

    执行用时 :0 ms, 在所有 java 提交中击败了100.00%的用户

    内存消耗 :34.3 MB, 在所有 java 提交中击败了85.14%的用户

    四. Java代码

    class Solution {
        public int rob(int[] nums) {
            if(nums.length<=0||nums==null) {
                return 0;
            }
            int []time=new int[nums.length];
            int maxvalue=0;
            for(int i=0;i<nums.length;i++) {
                if(i-2<0||i-3<0) {
                    if(i-2<0) {
                        time[i]=nums[i];
                    }else {
                        time[i]=time[i-2]+nums[i];
                    }
                    if(time[i]>maxvalue) {
                        maxvalue=time[i];
                    }
                  
                }else {
                    time[i]=Math.max(time[i-2]+nums[i], time[i-3]+nums[i]);
                    if(time[i]>maxvalue) {
                        maxvalue=time[i];
                    }
                    
                }
                
            }
            return maxvalue;
        }
    }
  • 相关阅读:
    【leetcode】9. Palindrome Number
    【leetcode】7. Reverse Integer
    【Leetcode】6. ZigZag Conversion
    Mysql读写分离
    Windows下为PHP安装redis扩展
    jquery 写的图片左右连续滚动
    PHP中spl_autoload_register函数的用法
    MySQL命令行查询乱码解决方法:
    AJAX 教程
    Mac安装composer爬过的坑
  • 原文地址:https://www.cnblogs.com/xiaobaidashu/p/12066543.html
Copyright © 2020-2023  润新知