📑前言本文主要是【动态规划】——打家劫舍(java版)的文章,如果有什么需要改进的地方还请大佬指出⛺️🎬作者简介:大家好,我是听风与他🥇☁️博客首页:CSDN主页听风与他🌄每日一句:狠狠沉淀,顶峰相见目录📑前言打家劫舍(java版)[LCR089.打家劫舍](https://leetcode.cn/problems/Gu0c2T/)代码:[LCR090.打家劫舍II](https://leetcode.cn/problems/PzWKhm/)代码:📑文章末尾打家劫舍(java版)LCR089.打家劫舍一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响小偷偷窃的唯一制约因素就是相
目录题目描述解法1:动态规划代码实现题目链接题目描述在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。解法1:动态规划这道题目算是树形dp的入门题目,因为是在树上进行状态转移,我们在讲解二叉树的时候说过递归三部曲,那么下面我以递归三部曲为框架,其中融合动规五部曲的内容来进行讲解。确定递归函数的
题目你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你不触动警报装置的情况下,一夜之内能够偷窃到的最高金额。示例输入:[1,2,3,1]输出:4解释:偷窃1号房屋(金额=1),然后偷窃3号房屋(金额=3)。偷窃到的最高金额=1+3=4。输入:[2,7,9,3,1]输出:12解释:偷窃1号房屋(金额=2),偷窃3号房屋(金额=9),接着偷窃5号房屋(金额=1)。偷窃到的最高金额=2+9+1=12。思路这是一个经典的
今天晚上补动态规划中的打家劫舍的系列的问题,不算难,一口气拿下。今日任务:198.打家劫舍213.打家劫舍II337.打家劫舍III文章目录题目一:198.打家劫舍题目二:213.打家劫舍II题目三:337.打家劫舍III(太难了,就简单欣赏下吧)题目一:198.打家劫舍Leetcode题目:【198.打家劫舍】当前房间的偷和不偷,会影响后面的选择,因此可以将其转化为一个动规的问题。(1)确定dp数组含义:考虑下标i(包含i),他能偷的最大金额为dp[i],最后就是dp[nums.size()-1](2)我们的递推公式:偷i:dp[i]=dp[i-2]+nums[i]不偷i:dp[i]=dp[
1.常规dp1.1爬楼梯1.1.1爬楼梯 由于求的是组合数,我们将不同路径相加即可dp定义:dp[i]为爬到第i阶楼梯的方法数;转移方程:dp[i]=dp[i-2]+dp[i-1];初始化: 由于涉及到i-2和i-1,那么我们要从i=2开始遍历,因此要初始化dp[0]=0,dp[1]=1(根据定义)遍历顺序:从左往右 完整代码:classSolution{public:intclimbStairs(intn){vectordp(n+1,0);dp[0]=0;dp[1]=1;if(n==1)return1;dp[2]=2;for(inti=3;i 1.1.2 使用最小花费爬楼梯 此题和上一题非常
文章目录前言LeetCode、198.打家劫舍【中等,一维线性DP】题目及分类思路线性DP(一维)资料获取前言博主介绍:✌目前全网粉丝2W+,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后端技术领域。涵盖技术内容:Java后端、算法、分布式微服务、中间件、前端、运维、ROS等。博主所有博客文件目录索引:博客目录索引(持续更新)视频平台:b站-Coder长路LeetCode、198.打家劫舍【中等,一维线性DP】题目及分类题目链接:LeetCode、198.打家劫舍分类:动态规划/线性DP思路线性DP(一维)思路说明:首先抓住条件:①无法同时偷连续的两所
动态规划(DynamicProgramming,简称DP)是一种解决问题的算法设计技术,通常用于优化问题。它通过将问题分解为更小的子问题,并解决这些子问题,然后合并它们的解决方案来解决原始问题。动态规划通常用于具有重叠子问题和最优子结构性质的问题。动态规划的主要思想是避免重复计算,通过将中间结果存储起来,以便后续直接使用,从而提高效率。这种思想在递归过程中特别有用,因为递归经常会重复计算相同的子问题。动态规划的解题思路:解决动态规划问题通常包括以下步骤:定义子问题:将原问题分解为规模较小的子问题。这有助于建立递归关系,也是动态规划的基础。建立状态转移方程:确定问题的状态,并找到状态之间的转移关
文章目录139.单词拆分1.dp含义2.递推3.初始化4.遍历顺序198.打家劫舍1.dp含义2.递推3.初始化4.遍历顺序213.打家劫舍Ⅱ337.打家劫舍Ⅲ121.买卖股票的最佳时机贪心算法动态规划1.dp含义2.递推3.初始化4.遍历顺序122.买卖股票的最佳时机Ⅱ123.买卖股票的最佳时机Ⅲ1.确定dp数组以及下标的含义2.递推公式dp[i][0]dp[i][1]:第一次持有dp[i][2]:第一次不持有dp[i][3]:第二次持有dp[i][4]:第二次不持有3.初始化188.买卖股票的最佳时机Ⅳ309.买卖股票的最佳时机含冷冻期**1.确定dp数组以及下标的含义**2.递推dp[i
个人主页:兜里有颗棉花糖欢迎点赞👍收藏✨留言✉加关注💓本文由兜里有颗棉花糖原创收录于专栏【手撕算法系列专栏】【LeetCode】🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望对大家有所帮助🍓希望我们一起努力、成长,共同进步。目录一、LCR089.打家劫舍1️⃣题目描述2️⃣题目解析3️⃣解题代码二、LCR090.打家劫舍II1️⃣题目描述2️⃣题目解析3️⃣解题代码一、LCR089.打家劫舍点击可直接跳转到该题目1️⃣题目描述一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响小偷偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚