首页 > 其他分享 >leetcode198&213-打家劫舍1,2

leetcode198&213-打家劫舍1,2

时间:2025-01-18 20:33:13浏览次数:3  
标签:偷窃 213 nums int leetcode198 start 房屋 打家劫舍 dp

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

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

示例 1:

输入:[1,2,3,1]
输出:4
解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。
     偷窃到的最高金额 = 1 + 3 = 4 。

首先让我们牢记动态规划四部曲:

  • dp数组定义,含义
  • 递推公式
  • 初始化
  • 遍历顺序 

很显然我们要求偷窃到的最高金额,我们的dp数组就要维护一个数组记录到目前偷到的最高金额。

递推公式我们可以这样来看dp[i]要么是i-2偷完了来偷你了,要么就是i-3偷完了i-1不惜的偷来偷你了

那么我们的递推就要加上一层比较到底偷不偷你上家,

dp[i]=Math.max(dp[i-2]+nums[i-1],dp[i-3]+nums[i-1]);

初始化:你看要有i-3和i-2了我们就得从3开始递推了,前面都当赠送条件了

class Solution {
    public int rob(int[] nums) {
        int n =nums.length;
        if(n<=1){
            return nums[0];
        }
        int[] dp = new int[n+1];
        dp[0] = 0;
        dp[1] = nums[0];
        dp[2] = nums[1];
        for(int i = 3;i<=n;i++){
            dp[i]=Math.max(dp[i-2]+nums[i-1],dp[i-3]+nums[i-1]);
        }
        return Math.max(dp[n],dp[n-1]);
    }
}

你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。

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

示例 1:

输入:nums = [2,3,2]
输出:3
解释:你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因为他们是相邻的。

这个问题还是比上面多了一层操作 , 因为第一个和最后一个不能挨着,那么我们换一种想法就是,把第一个和最后一个分开算,算完再比一下大小就OK

就把上面的封装一下,封装成一个方法,然后传进去比较。

class Solution {
    public int rob(int[] nums) {
        int n = nums.length;
        if(n == 0) return 0;
        if(n == 1) return nums[0];
      return Math.max(rob(nums,0,n-2),rob(nums,1,n-1));
    }
    int rob(int[] nums,int start,int end){
        if (end == start) return nums[start];
        int[] dp = new int[nums.length];
        dp[start] = nums[start];
        dp[start+1] = Math.max(nums[start],nums[start+1]);
        for(int i = start+2;i<=end;i++){
            dp[i] = Math.max(dp[i-2]+nums[i],dp[i-1]);
        }
        return dp[end];
    }
}

标签:偷窃,213,nums,int,leetcode198,start,房屋,打家劫舍,dp
From: https://blog.csdn.net/weixin_74047328/article/details/145231517

相关文章

  • 【洛谷训练记录】【LGR-213-Div.4】洛谷入门赛 #31
    训练情况赛后反思模拟题差点红温,差一道字符串模拟题AKA题问一个数\(a\)加多少后的个位数变成\(b\),取出\(a\)的个位数,再用\(b\)去减,如果小于零答案再加十。#include<bits/stdc++.h>//#defineintlonglong#defineendl'\n'usingnamespacestd;voidsolve()......
  • 【代码随想录】刷题记录(105)-打家劫舍
    题目描述:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况......
  • 337. 打家劫舍 III
    337.打家劫舍IIIvarrob=function(root){functiondfs(node){if(!node)return[0,0];//[不偷当前节点的最大金额,偷当前节点的最大金额]constleft=dfs(node.left);constright=dfs(node.right);//如果不偷当前节点......
  • 213. 打家劫舍 II
    213.打家劫舍IIvarrob=function(nums){if(!Array.isArray(nums)||nums.some(isNaN)){thrownewError("Invalidinput:numsmustbeanarrayofnumbers");}constn=nums.length;if(n===0)return0;if(n===1)......
  • 20221320 冯泰瑞 《信息安全综合实践》课程设计报告——基于文本文件信息隐藏和二值图
    20221320冯泰瑞《信息安全综合实践》课程设计报告——基于文本文件信息隐藏和二值图像信息隐藏的回声信息隐藏算法实现任务简介隐藏原理研究发现,HAS(HumanAudioSystem,人类听觉系统)存在感知掩蔽效应,即强信号的存在会使其附近的弱信号难以被感知。因此,当回声与原声的间隔充分......
  • 20221320冯泰瑞《密码系统设计》第十二周
    20221320冯泰瑞《密码系统设计》第十二周学习内容HeadFirstC嗨翻C语言第12章课程mindmapAI对学习内容的总结要求让AI(kimi,元宝等)阅读学习内容并进行总结,教材内容可以使用微信读书或者云班课电子教材总结《HeadFirstC》第十二章的内容主要介绍了如何在C语言中使......
  • 20221320冯泰瑞—阅读习惯(选做)
    阅读习惯(选做)1.推荐参考批判性思维书单https://weread.qq.com/misc/booklist/3107758_7sb8Fs2Hv,机关公文写作书单https://weread.qq.com/misc/booklist/3107758_7TeJ68iPx,公务员素质书单https://weread.qq.com/misc/booklist/3107758_7usfrsrTZ从中选择阅读,养成阅读习惯2.提......
  • 20221320冯泰瑞《密码系统设计》第十周
    20221320冯泰瑞《密码系统设计》第十周学习内容HeadFirstC嗨翻C语言第10章课程mindmapAI对学习内容的总结要求让AI(kimi,元宝等)阅读学习内容并进行总结,教材内容可以使用微信读书或者云班课电子教材总结《HeadFirstC》第十章的内容主题是进程间通信(InterprocessC......
  • 20221320冯泰瑞《密码系统设计》第十一周
    20221320冯泰瑞《密码系统设计》第十一周学习内容HeadFirstC嗨翻C语言第11章课程mindmapAI对学习内容的总结要求让AI(kimi,元宝等)阅读学习内容并进行总结,教材内容可以使用微信读书或者云班课电子教材总结《HeadFirstC》第十一章的内容主要介绍了C语言中网络编程......
  • 国产化板卡设计原理图:2136-KC705E增强版基于FMC接口的 JFM7K325T PCIeX8 接口卡
    KC705E增强版基于FMC接口的JFM7K325TPCIeX8接口卡    一、板卡概述   本板卡基于FPGAJFM7K325T 芯片,pin_to_pin兼容FPGAXC7K410T-2FFG900 ,支持PCIeX8、64bit DDR3容量2GByte,HPC的FMC连接器,板卡支持各种接口输入,软件支持windows,Linux驱动。    二、功......