首页 > 其他分享 >代码随想录 day40 打家劫舍 及其变体

代码随想录 day40 打家劫舍 及其变体

时间:2024-07-30 23:28:50浏览次数:6  
标签:知识点 动态 后序 随想录 数组 打家劫舍 规划 day40

打家劫舍

打家劫舍

解题思路

动态规划解决问题,通过前两个值决定第三个值,需要注意的是初始值的选择,第二个的值是取前两个数中较大的,这样是为了保证跳过不需要取的值

知识点

动态规划

心得

初始值的选择没有考虑到,其余的都写出来了

打家劫舍 二

打家劫舍二

解题思路

前一题的改进,只需要分别对没有头元素和没有末尾元素的两个数组进行同样的动态规划处理,之后比较谁的结果打即可,这样就避免了选取首位相邻的情况。

知识点

动态规划

心得

简单

打家劫舍 三

打家劫舍 三

解题思路

将动态规划和二叉树进行的结合,难点在于确定dp数组的大小,在本题中,该数组的大小为2,因为只存在对于该节点偷与不偷的情况,随后边进行后序遍历(左右中,因为中间的值是需要左右的值来决定的。最后通过比较偷与不偷该节点的大小来进行后续的抉择

知识点

动态规划,二叉树的后序遍历

心得

挺难的一道题。一开始做的时候想到了使用后序遍历,但是dp数组完全不知道该怎么去确定,现在又学习了一道新的思路解法

标签:知识点,动态,后序,随想录,数组,打家劫舍,规划,day40
From: https://www.cnblogs.com/TKK-YLF/p/18333544

相关文章

  • 代码随想录算法训练营Day0| LeetCode704: 二分查找
    LeetCode704二分查找先看了一下数组理论基础:数组基础题目链接:704.二分查找啥也没看,凭感觉直接上手:classSolution(object): defsearch(self,nums,target): fornuminnums: ifnum==target: returnnums.index(num) break return-1通过倒是......
  • 代码随想录二刷(链表章节)
    代码随想录二刷(链表章节)链表就是通过指针串联在一起的线性结构,每个节点都是由一个数据域和指针域(存放下一个节点的指针)。双链表就是每个节点中既有指向前一个节点的,也有指向后一个节点的。循环链表就是把头和尾连起来。性能分析如下:下面来看下链表的具体题目:Leetcod......
  • 代码随想录day14 || 226 翻转二叉树,101 对称二叉树, 104 二叉树的最大深度, 111 二叉树
    226翻转二叉树funcinvertTree(root*TreeNode)*TreeNode{ //思考,广度优先遍历,对于每一层,翻转其左右子节点 ifroot==nil{ returnnil } queue:=list.New() queue.PushBack(root) size:=1//存储每一层的节点个数 forqueue.Len()>0{ varcountint ......
  • 代码随想录算法训练营第28天 | 贪心进阶
    2024年7月30日题122.买卖股票的最佳时机II上涨就买,下跌就不买。classSolution{publicintmaxProfit(int[]prices){intsum=0;for(inti=1;i<prices.length;i++){sum+=prices[i]-prices[i-1]>0?prices[i]-prices[i-1]:0;......
  • 代码随想录算法训练营第27天 | 初入贪心
    2024年7月29日题455.分发饼干先排序,然后依次分发即可。classSolution{publicintfindContentChildren(int[]g,int[]s){//对于每个孩子胃口,从小到大分配,且给尽可能少的饼干Arrays.sort(g);Arrays.sort(s);intcnt=0;......
  • 代码随想录——完全平方数(Leetcode 279)
    题目链接动态规划动态规划思路:状态定义:定义一个一维数组dp,其中dp[i]表示组成整数i所需的最少完全平方数的数量。状态初始化:将dp数组中的所有元素初始化为Integer.MAX_VALUE,表示初始状态下组成每个整数的完全平方数数量是无限大(即不可能)。但dp[0]需要初始化为0,因为组成......
  • 代码随想录 day39 零钱兑换 | 完全平方数 | 单词拆分
    零钱兑换零钱兑换解题思路还是完全背包的套路,但这次我们要求的是最小值,因此每次遍历的时候我们要找到最小值,每次给dp增加的大小不在是物品的价值而是长度,所以+1。知识点完全背包心得难点在于怎么样找到最小值完全平方数[完全平方数(https://programmercarl.com/0279.完......
  • 「代码随想录算法训练营」第二十三天 | 贪心算法 part1
    455.分发饼干题目链接:https://leetcode.cn/problems/assign-cookies/题目难度:简单文章讲解:https://programmercarl.com/0455.分发饼干.html视频讲解:https://www.bilibili.com/video/BV1MM411b7cq题目状态:初次有贪心算法的总体概念,有点懵思路:先将饼干尺寸大的满足胃口大......
  • 代码随想录day13 || 树定义以及遍历
    二叉树定义和种类二叉树是一种树形数据结构,其中每个节点最多有两个子节点,通常称为“左子节点”和“右子节点”。二叉树在计算机科学中有广泛的应用,比如表达式解析、排序算法、搜索算法等。二叉树的定义一个二叉树由一组节点组成,其中每个节点至多有两个子节点,分别称为左子节点和......
  • 最细哈希表相关的力扣题和讲解和Java、C++常用的数据结构(哈希法)来源于代码随想录,十分
    20240725一、什么时候适用什么样的结构。1.java中1.1HashSet:1.2TreeSet:1.3LinkedHashSet:1.4HashMap:1.5TreeMap:1.6LinkedHashMap:1.7总结2.c++中2.1std::unordered_set:2.2std::set:2.3std::multiset:2.4std::unordered_map:2.5std::map:2.6std::multimap:3代码......