代码随想录算法训练营day39|动态规划part7

今天是打家劫舍专题,第一题难度不大,想出状态转移方程dp[i]=max(dp[i-2]+nums[i],dp[i-1])即可求解;第二题相比于第一题,这题的房屋改成了环状结构,表面上看很难,实际上只需分类讨论,分成不包含头节点和不包含末节点两部分分别用第一题的思路求解,然后再取最大值即可。

重点是第三题,第三题是二叉树和dp的结合,难度比较大。这题的状态转移方程和前面的题目的形式都不同,因为这题是在二叉树上进行的操作,又因为操作二叉树需要采用递归,所以这道题实际上是每一层都创建一个dp数组,所以这个dp数组只需记录每一层的状态再向上返回即可。所以dp数组只需含有两个元素,一个记录不偷当前节点的状态,另一个记录偷当前节点的状态,然后逐层向上递归即可。

198.打家劫舍

视频讲解:动态规划,偷不偷这个房间呢?| LeetCode:198.打家劫舍_哔哩哔哩_bilibili

代码随想录

213.打家劫舍II

视频讲解:动态规划,房间连成环了那还偷不偷呢?| LeetCode:213.打家劫舍II_哔哩哔哩_bilibili

代码随想录

337.打家劫舍III

视频讲解:动态规划,房间连成树了,偷不偷呢?| LeetCode:337.打家劫舍3_哔哩哔哩_bilibili

代码随想录

相关推荐
兩尛5 分钟前
欢乐周末 (2025B卷
算法
liu****13 分钟前
九.操作符详解
c语言·开发语言·数据结构·c++·算法
ALex_zry16 分钟前
C语言底层编程与Rust的现代演进:内存管理、系统调用与零成本抽象
c语言·算法·rust
TheLegendMe17 分钟前
动态规划Day01
算法·动态规划
666HZ66618 分钟前
C语言——交换
c语言·c++·算法
我爱鸢尾花18 分钟前
RNN公式推导、案例实现及Python实现
人工智能·python·rnn·深度学习·神经网络·算法
无限进步_22 分钟前
基于顺序表的通讯录系统设计与实现
c语言·开发语言·数据结构·c++·后端·算法·visual studio
.格子衫.32 分钟前
028动态规划之字符串DP——算法备赛
算法·动态规划·字符串
小此方36 分钟前
Re:从零开始的链式二叉树:建树、遍历、计数、查找、判全、销毁全链路实现与底层剖析
c语言·数据结构·c++·算法
im_AMBER40 分钟前
Leetcode 65 固定长度窗口 | 中心辐射型固定窗口
笔记·学习·算法·leetcode