- 博客(55)
- 收藏
- 关注
原创 代码随想录算法训练营第四十二天| 01背包问题,你该了解这些! 01背包问题,你该了解这些! 滚动数组 416. 分割等和子集
正式开始背包问题,背包问题还是挺难的,虽然大家可能看了很多背包问题模板代码,感觉挺简单,但基本理解的都不够深入。如果做过背包类问题,可以先看视频,很多内容,是自己平时没有考虑到位的。如果是直接从来没听过背包问题,可以先看文字讲解慢慢了解 这是干什么的。背包问题,力扣上没有原题,大家先了解理论,今天就安排一道具体题目。416. 分割等和子集。本题是 01背包的应用类题目。
2023-09-24 15:41:32
177
原创 代码随想录算法训练营第四十一天| 343. 整数拆分 96.不同的二叉搜索树
今天两题都挺有难度,建议大家思考一下没思路,直接看题解,第一次做,硬想很难想出来。343. 整数拆分那么在取最大值的时候,为什么还要比较dp[i]呢?因为在递推公式推导的过程中,每次计算dp[i],取最大的而已。
2023-09-18 12:54:45
208
原创 代码随想录算法训练营第三十九天| 62.不同路径 63. 不同路径 II
今天开始逐渐有 dp的感觉了,题目不多,就两个 不同路径,可以好好研究一下。本题大家掌握动态规划的方法就可以。数论方法 有点非主流,很难想到。63. 不同路径 II。
2023-09-18 10:29:55
217
原创 代码随想录算法训练营第三十八天|理论基础 ● 509. 斐波那契数 ● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯
理论基础无论大家之前对动态规划学到什么程度,一定要先看 我讲的 动态规划理论基础。如果没做过动态规划的题目,看我讲的理论基础,会有感觉 是不是简单题想复杂了?其实并没有,我讲的理论基础内容,在动规章节所有题目都有运用,所以很重要!如果做过动态规划题目的录友,看我的理论基础 就会感同身受了。509. 斐波那契数很简单的动规入门题,但简单题使用来掌握方法论的,还是要有动规五部曲来分析。70. 爬楼梯本题大家先自己想一想, 之后会发现,和 斐波那契数 有点关系。
2023-09-18 09:32:06
236
原创 代码随想录算法训练营第三十七天|738.单调递增的数字 968.监控二叉树 总结
738.单调递增的数字例如:98,一旦出现strNum[i - 1] > strNum[i]的情况(非单调递增),首先想让strNum[i - 1]--,然后strNum[i]给为9,这样这个整数就是89,即小于98的最大的单调递增整数。从前向后遍历的话,遇到strNum[i - 1] > strNum[i]的情况,让strNum[i - 1]减一,但此时如果strNum[i - 1]减一了,可能又小于strNum[i - 2]。
2023-09-17 22:23:58
316
原创 代码随想录算法训练营第三十六天| 435. 无重叠区间 763.划分字母区间 56. 合并区间
即intervals[i]的左边界 <= intervals[i - 1]的右边界,则一定有重叠。(本题相邻区间也算重贴,所以是<=)今天的三道题目,都算是 重叠区间 问题,大家可以好好感受一下。所以一样的套路,先排序,让所有的相邻区间尽可能的重叠在一起,按左边界,或者右边界排序都可以,处理逻辑稍有不同。这几道题都是判断区间重叠,区别就是判断区间重叠后的逻辑,本题是判断区间重贴后要进行区间合并。还是属于那种,做过了也就会了,没做过就很难想出来。大家如果认真做题的话,话发现和我们刚刚讲过的。
2023-09-17 19:43:17
225
原创 代码随想录算法训练营第三十五天| 860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球
按照身高排序之后,优先按身高高的people的k来插入,后序插入节点也不会影响前面已经插入的节点,最终按照k的规则完成了队列。本题有两个维度,h和k,看到这种题目一定要想如何确定一个维度,然后再按照另一个维度重新排列。我就强调过一次,遇到两个维度权衡的时候,一定要先确定一个维度,再确定另一个维度。本题是一道 重叠区间的题目,好好做一做,因为明天三道题目,都是 重叠区间。本题有点难度,和分发糖果类似,不要两头兼顾,处理好一边再处理另一边。本题看上好像挺难,其实挺简单的,大家先尝试自己做一做。
2023-09-16 11:22:43
166
原创 代码随想录算法训练营第三十四天| 1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果
那么又是一个贪心:局部最优:只找数值最小的正整数进行反转,当前数值和可以达到最大(例如正整数数组{5, 3, 1},反转1 得到-1 比 反转5得到的-5 大多了),全局最优:整个 数组和 达到最大。那么如果将负数都转变为正数了,K依然大于0,此时的问题是一个有序正整数序列,如何转变K次正负,让 数组和 达到最大。贪心的思路,局部最优:让绝对值大的负数变为正数,当前数值达到最大,整体最优:整个数组和达到最大。本题简单一些,估计大家不用想着贪心 ,用自己直觉也会有思路。局部最优可以推出全局最优。
2023-09-16 10:14:38
59
原创 24~29总结:组合、分割、子集、全排列
第一次取1,集合变为2,3,4 ,因为k为2,我们只需要再取一个数就可以了,分别取2,3,4,得到集合[1,2] [1,3] [1,4],以此类推。求排列问题的时候,就要从0开始,因为集合是有序的,{1, 2} 和{2, 1}是两个集合,排列问题我们后续的文章就会讲到的。其实子集也是一种组合问题,因为它的集合是无序的,子集{1,2} 和 子集{2,1}是一样的。可以看出这棵树,一开始集合是 1,2,3,4, 从左向右取数,取过的数,不再重复取。的整数数组 nums,返回该数组所有可能的子集(幂集)。
2023-09-15 13:55:21
73
原创 代码随想录算法训练营第三十二天|122.买卖股票的最佳时机II 55. 跳跃游戏 45.跳跃游戏II
本题同样不容易想出来。贪心就是这样,有的时候 会感觉简单到离谱,有时候,难的不行,主要是不容易想到。本题如果没接触过,很难想到,所以不要自己憋时间太久,读题思考一会,没思路立刻看题解。本题解法很巧妙,大家可以看题思考一下,在看题解。122.买卖股票的最佳时机II。
2023-09-09 20:35:31
147
原创 代码随想录算法训练营第三十一天|理论基础 455.分发饼干 376. 摆动序列 53. 最大子序和
基本贪心的题目 有两个极端,要不就是特简单,要不就是死活想不出来。,所以大家了解贪心算法 就了解它没有规律的本质就够了。学完贪心之后再去看动态规划,就会了解贪心和动规的区别。不用花心思去研究其规律, 没有思路就立刻看题解。贪心算法其实就是没有什么规律可言。可以用dp,也可以用贪心。
2023-09-09 18:32:29
209
原创 代码随想录算法训练营第三十天| 332.重新安排行程 51. N皇后 37. 解数独
因为 一刷 也不求大家能把这么难的问题解决,所以 大家一刷的时候,就了解一下题目的要求,了解一下解题思路,不求能直接写出代码,先大概熟悉一下这些题,二刷的时候,随着对回溯算法的深入理解,再去解决如下三题。今天这三道题都非常难,那么这么难的题,为啥一天做三道?大家今天的任务,其实是 对回溯算法章节做一个总结就行。332.重新安排行程(可跳过)51. N皇后(可跳过)37. 解数独(可跳过)
2023-09-07 20:12:15
202
原创 代码随想录算法训练营第二十九天| 491.递增子序列 46.全排列 47.全排列 II
本题 就是我们讲过的 40.组合总和II 去重逻辑 和 46.全排列 的结合,可以先自己做一下,然后重点看一下 文章中 我讲的拓展内容。used[i - 1] == true 也行,used[i - 1] == false 也行。本题重点感受一下,排列问题 与 组合问题,组合总和,子集问题的区别。为什么排列问题不用 startIndex。本题和大家刚做过的 90.子集II 非常像,但又很不一样,很容易掉坑里。
2023-09-07 18:47:35
127
原创 代码随想录算法训练营第二十八天| 93.复原IP地址 78.子集 90.子集II
大家之前做了 40.组合总和II 和 78.子集 ,本题就是这两道题目的结合,建议自己独立做一做,本题涉及的知识,之前都讲过,没有新内容。子集问题,就是收集树形结构中,每一个节点的结果。整体代码其实和 回溯模板都是差不多的。本来是很有难度的,不过 大家做完 分割回文串 之后,本题就容易很多了。如果把 子集问题、组合问题、分割问题都抽象为一棵树的话,
2023-09-05 16:17:15
114
原创 代码随想录算法训练营第二十五天|39. 组合总和 40. 组合总和 II 216.组合总和III 17.电话号码的字母组合
和另外两种组合一起看:分别是选取的数组有无重复,以及能否重复使用,在于start,去重读的区别。本题大家刚开始做会有点难度,先自己思考20min,没思路就直接看题解。如果把 组合问题理解了,本题就容易一些了。17.电话号码的字母组合。216.组合总和III。
2023-09-01 22:40:03
36
原创 代码随想录算法训练营第二十四天|理论基础 77. 组合
其实在讲解二叉树的时候,就给大家介绍过回溯,这次正式开启回溯算法,大家可以先看视频,对回溯算法有一个整体的了解。对着 在 回溯算法理论基础 给出的 代码模板,来做本题组合问题,大家就会发现 写回溯算法套路。在回溯算法解决实际问题的过程中,大家会有各种疑问,先看视频介绍,基本可以解决大家的疑惑。本题关于剪枝操作是大家要理解的重点,因为后面很多回溯算法解决的题目,都是这个剪枝套路。
2023-09-01 18:59:05
340
原创 代码随想录算法训练营第二十三天|669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树 ● 总结篇
本题也不难,在 求二叉搜索树的最小绝对差 和 众数 那两道题目 都讲过了 双指针法,思路是一样的。这道题目比较难,比 添加增加和删除节点难的多,建议先看视频理解。递归: 左闭右开 [left,right)好了,二叉树大家就这样刷完了,做一个总结吧。108.将有序数组转换为二叉搜索树。538.把二叉搜索树转换为累加树。本题就简单一些,可以尝试先自己做做。669. 修剪二叉搜索树。
2023-09-01 15:53:05
47
原创 代码随想录算法训练营第二十二天| 235. 二叉搜索树的最近公共祖先 701.二叉搜索树中的插入操作 450.删除二叉搜索树中的节点
本题比想象中的简单,大家可以先自己想一想应该怎么做,然后看视频讲解,就发现 本题为什么比较简单了。相对于 二叉树的最近公共祖先 本题就简单一些了,因为 可以利用二叉搜索树的特性。相对于 插入操作,本题就有难度了,涉及到改树的结构。235. 二叉搜索树的最近公共祖先。701.二叉搜索树中的插入操作。450.删除二叉搜索树中的节点。
2023-09-01 14:42:47
29
原创 代码随想录算法训练营第二十一天| 530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先
同时要学会在递归遍历的过程中如何记录前后两个指针,这也是一个小技巧,学会了还是很受用的。和 530差不多双指针思路,不过 这里涉及到一个很巧妙的代码技巧。需要领悟一下二叉树遍历上双指针操作,优先掌握递归。,我们只需要在中序遍历的时候和前一个节点比较,保存。本题其实是比较难的,可以先看我的视频讲解。可以先自己做做看,然后看我的视频讲解。530.二叉搜索树的最小绝对差。236. 二叉树的最近公共祖先。501.二叉搜索树中的众数。
2023-09-01 13:35:08
28
原创 代码随想录算法训练营day1~18总结
day1:day2:day3:day4:day6:day7: day8:day9:栈队day10:day11:day13:二叉树。
2023-08-30 18:46:43
152
原创 代码随想录算法训练营第二十天| 654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树
又是构造二叉树,昨天大家刚刚做完 中序后序确定二叉树,今天做这个 应该会容易一些, 先看视频,好好体会一下 为什么构造二叉树都是 前序遍历。这次是一起操作两个二叉树了, 估计大家也没一起操作过两个二叉树,也不知道该如何一起操作,可以看视频先理解一下。但本题是有陷阱的,可以自己先做一做,然后在看题解,看看自己是不是掉陷阱里了。递归和迭代 都可以掌握以下,因为本题比较简单, 了解一下 二叉搜索树的特性。遇到 搜索树,一定想着中序遍历,这样才能利用上特性。700.二叉搜索树中的搜索。写了一版就是掉进陷阱的。
2023-08-29 00:32:53
28
原创 代码随想录算法训练营第十八天 | 513.找树左下角的值112. 路径总和 113.路径总和ii 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树
106.从中序与后序遍历序列构造二叉树,105.从前序与中序遍历序列构造二叉树 一起做,思路一样的。本题 又一次设计要回溯的过程,而且回溯的过程隐藏的还挺深,建议先看视频来理解。112. 路径总和,和 113. 路径总和ii 一起做了。本题递归偏难,反而迭代简单属于模板题, 两种方法掌握一下。本题算是比较难的二叉树题目了,大家先看视频来理解。从中序与后序遍历序列构造二叉树。
2023-08-26 21:14:06
68
原创 代码随想录算法训练营第十七天 | 110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和
这是大家第一次接触到回溯的过程, 我在视频里重点讲解了 本题为什么要有回溯,已经。其实本题有点文字游戏,搞清楚什么是左叶子,剩下的就是二叉树的基本操作。再一次涉及到,什么是高度,什么是深度,可以巩固一下。257. 二叉树的所有路径 (优先掌握递归)如果对回溯 似懂非懂,没关系, 可以先有个印象。110.平衡二叉树 (优先掌握递归)404.左叶子之和 (优先掌握递归)
2023-08-25 13:28:09
26
原创 代码随想录算法训练营第十六天 | 104.二叉树的最大深度 559.n叉树的最大深度 111.二叉树的最小深度 222.完全二叉树的节点个数
大家 要先看视频讲解,就知道以上我说的内容了,很多录友刷过这道题,但理解的还不够。什么是深度,什么是高度,如何求深度,如何求高度,这里有关系到二叉树的遍历方式。先看视频讲解,和最大深度 看似差不多,其实 差距还挺大,有坑。需要了解,普通二叉树 怎么求,完全二叉树又怎么求。222.完全二叉树的节点个数(优先掌握递归)104.二叉树的最大深度 (优先掌握递归)111.二叉树的最小深度 (优先掌握递归)
2023-08-23 22:15:14
127
原创 代码随想录算法训练营第十五天 | 层序遍历 226.翻转二叉树 101.对称二叉树 2
这道题目 一些做过的同学 理解的也不够深入,建议大家先看我的视频讲解,无论做过没做过,都会有很大收获。看完本篇可以一口气刷十道题,试一试, 层序遍历并不难,大家可以很快刷了十道题。101. 对称二叉树 (优先掌握递归)226.翻转二叉树 (优先掌握递归)先看视频讲解,会更容易一些。
2023-08-23 21:35:32
109
原创 面试题——2
15. 三数之和1. 两数之和21. 合并两个有序链表面试题 08.06. 汉诺塔问题104. 二叉树的最大深度88. 合并两个有序数组912. 排序数组53. 最大子数组和
2023-08-23 10:52:49
28
原创 代码随想录算法训练营第十四天 | 理论基础 递归遍历 迭代遍历 统一迭代
需要了解 二叉树的种类,存储方式,遍历方式 以及二叉树的定义。统一迭代 (基础不好的录友,迭代法可以放过)这是统一迭代法的写法, 如果学有余力,可以掌握一下。二叉树的三种递归遍历掌握其规律后,其实很简单。迭代遍历 (基础不好的录友,迭代法可以放过)递归遍历 (必须掌握)
2023-08-22 15:40:42
98
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人