自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 代码随想录算法训练营第三十六天 | 435. 无重叠区间,763. 划分字母区间,56. 合并区间

今天的三道题目,都算是 重叠区间 问题,大家可以好好感受一下。都属于那种看起来好复杂,但一看贪心解法,惊呼:这么巧妙!还是属于那种,做过了也就会了,没做过就很难想出来。不过大家把如下三题做了之后,重叠区间 基本上差不多了。

2024-04-06 09:51:38 462

原创 代码随想录算法训练营第三十五天 | 860. 柠檬水找零,406. 根据身高重建队列,452. 用最少数量的箭引爆气球

今天的三道题目,都算是 重叠区间 问题,大家可以好好感受一下。都属于那种看起来好复杂,但一看贪心解法,惊呼:这么巧妙!还是属于那种,做过了也就会了,没做过就很难想出来。不过大家把如下三题做了之后,重叠区间基本上差不多了。763. 划分字母区间。435. 无重叠区间。

2024-04-04 08:01:33 903

原创 代码随想录算法训练营第三十四天 | 1005. K次取反后最大化的数组和,134. 加油站,135. 分发糖果

本题简单一些,估计大家不用想着贪心 ,用自己直觉也会有思路。

2023-12-25 17:01:24 926

原创 代码随想录算法训练营第三十二天 | 122. 买卖股票的最佳时机II,55. 跳跃游戏,45. 跳跃游戏II

3. 这道题目关键点在于:不用拘泥于每次究竟跳几步,而是看覆盖范围,覆盖范围内一定是可以跳过来的,不用管是怎么跳的。思路:1. 初始化覆盖范围,当nums长度为1时,直接返回true。

2023-11-17 19:57:05 60

原创 代码随想录算法训练营第三十一天 | 贪心算法理论基础,455. 分发饼干,376. 摆动序列,53. 最大子序和

本篇给出了什么是贪心以及大家关心的贪心算法固定套路。不好意思了,贪心没有套路,说白了就是常识性推导加上举反例。最后给出贪心的一般解题步骤,大家可以发现这个解题步骤也是比较抽象的,不像是二叉树,回溯算法,给出了那么具体的解题套路和模板。

2023-11-14 22:28:51 47

原创 代码随想录算法训练营第三十天 | 332. 重新安排行程,51. N皇后,37. 解数独,回溯算法总结

回溯是递归的副产品,只要有递归就会有回溯,所以回溯法也经常和二叉树遍历,深度优先搜索混在一起,因为这两种方式都是用了递归。回溯法就是暴力搜索,并不是什么高效的算法,最多再剪枝一下。回溯算法能解决如下问题组合问题:N个数里面按一定规则找出k个数的集合排列问题:N个数按一定规则全排列,有几种排列方式切割问题:一个字符串按一定规则有几种切割方式子集问题:一个N个数的集合里有多少符合条件的子集棋盘问题:N皇后,解数独等等回溯法确实不好理解,所以需要把回溯法抽象为树状图来理解就容易多了。

2023-11-14 12:21:20 67

原创 代码随想录算法训练营第二十九天 | 491. 递增子序列,46. 全排列,47. 全排列II

本题和大家刚做过的 90.子集II 非常像,但又很不一样,很容易掉坑里。重点:1. 树层去重:Set记录本层使用过的元素2. 裁剪树枝: 如果当前元素比path的最后一个元素还要小,没必要处理思路:递归+回溯:1. 确定参数及返回值2. 确定终止条件求子集问题的终止条件其实都没必要写,因为for循环会自动终止3. 确定单层递归的逻辑。

2023-11-02 20:43:56 105

原创 代码随想录算法训练营第二十八天 | 93. 复原IP地址,78. 子集,90.子集II

本期本来是很有难度的,不过 大家做完 分割回文串 之后,本题就容易很多了重点:1. startIndex作为切割线2. for循环,循环的是树的其中一层也就是当前切割线。递归,是递归到下一层,也就是下一根切割线思路:递归+回溯:1. 确定参数及返回值2. 确定终止条件判断当前画了几个点了,到了3个就切割完成,检查最后一部分是否满足IP要求。前面的部分在for循环的时候就检查了3. 确定单层递归的逻辑for循环移动的是当前的分割线,判断当前分割线有多少种可能。

2023-10-18 15:38:44 94

原创 代码随想录算法训练营第二十七天 | 39. 组合总和,40. 组合总和II,131. 分割回文串

本题是 集合里元素可以用无数次,那么和组合问题的差别 其实仅在于 startIndex上的控制重点:1. startIndex的作用startIndex是为了控制candidates的大小,如果没有startIndex,那么candidates的长度将一直保持为原始长度,并且后续的递归也会得出前面递归的相同的结果,出现重复的结果。2. 什么时候需要使用startIndex?只对于求组合来说。如果是一个集合来求组合的话,就需要startIndex。

2023-10-06 09:38:54 44

原创 代码随想录算法训练营第二十五天 | 216. 组合总和III, 17. 电话号码的字母组合

如果把 组合问题理解了,本题就容易一些了。重点:1. 递归+回溯的模板2. 回溯的剪枝思路:递归+回溯:1. 确定参数及返回值两个全局变量path和result,还要需要sum记录当前的和,startIndex记录从哪个开始2. 确定终止条件当path记录到了k个时,检查当前的sum是否满足条件3. 确定单层递归和回溯的逻辑for循环控制每层的循环的1-9的哪一个,接着再递归下去就行剪枝操作在函数开头,sum超过n了,直接return。

2023-10-03 22:18:29 48

原创 代码随想录算法训练营第二十四天 | 回溯算法理论基础,77. 组合

回溯法也可以叫做回溯搜索法,它是一种搜索的方式。回溯是递归的副产品,只要有递归就会有回溯。。

2023-09-30 17:16:41 44

原创 代码随想录算法训练营第二十三天 | 669. 修剪二叉搜索树,108. 将有序数组转换为二叉搜索树,538. 把二叉搜索树转换为累加树,二叉树总结

669. 修剪二叉搜索树这道题目比较难,比添加增加和删除节点难的多,建议先看视频理解。题目链接/文章讲解:代码随想录视频讲解:你修剪的方式不对,我来给你纠正一下!| LeetCode:669. 修剪二叉搜索树_哔哩哔哩_bilibili108. 将有序数组转换为二叉搜索树本题就简单一些,可以尝试先自己做做。题目链接/文章讲解:代码随想录视频讲解:构造平衡二叉搜索树!| LeetCode

2023-09-19 21:01:27 51 1

原创 代码随想录算法训练营第二十二天 | 235. 二叉搜索树的最近公共祖先,701. 二叉搜索树中的插入操作,450. 删除二叉搜索树中的节点

相对于 二叉树的最近公共祖先 本题就简单一些了,因为 可以利用二叉搜索树的特性。重点:1.思路:1.

2023-09-14 22:43:00 97 1

原创 代码随想录算法训练营第二十一天 | 530. 二叉搜索树的最小绝对差,501. 二叉搜索树中的众数,236. 二叉树的最近公共祖先

需要领悟一下二叉树遍历上双指针操作,优先掌握递归重点:1. 中序遍历二叉搜索树为单调递增数组。单调递增就说明了最小的差值肯定出现在相邻的数值上2. 双指针。全局的指针变量不变,递归的指针变量被回溯到了上一个思路:递归法:1. 确定参数及返回值因为要遍历全部路径,并且不需要对递归返回值处理2. 确定终止条件3. 确定单层递归的逻辑中序遍历+双指针。中序遍历保证了遍历的单调递增性。

2023-09-13 16:35:42 85

原创 代码随想录算法训练营第二十天 | 654. 最大二叉树,617. 合并二叉树,700. 二叉搜索树中的搜索,98. 验证二叉搜索树

又是构造二叉树,昨天大家刚刚做完 中序后序确定二叉树,今天做这个 应该会容易一些, 先看视频,好好体会一下 为什么构造二叉树都是 前序遍历。

2023-09-11 15:52:54 66

原创 代码随想录算法训练营第十八天 | 513. 找树左下角的值,112. 路径总和,113. 路径总和II,106. 从中序与后序遍历序列构造二叉树,105. 从前序与中序遍历序列构造二叉树

本地递归偏难,反而迭代简单属于模板题, 两种方法掌握一下。

2023-09-06 00:11:27 60 1

原创 代码随想录算法训练营第十七天 | 110. 平衡二叉树,257. 二叉树的所有路径,404. 左叶子之和

再一次涉及到,什么是高度,什么是深度,可以巩固一下。

2023-08-31 00:40:11 115

原创 代码随想录算法训练营第十六天 | 104. 二叉树的最大深度, 559. N叉树的最大深度,111. 二叉树的最小深度,222. 完全二叉树的节点个数

什么是深度,什么是高度,如何求深度,如何求高度,这里有关系到二叉树的遍历方式。大家要先看视频讲解,就知道以上我说的内容了,很多录友刷过这道题,但理解的还不够。

2023-08-30 17:56:05 45 1

原创 代码随想录算法训练营第十五天 | 层序遍历,226. 翻转二叉树,101.对称二叉树

看完本篇可以一口气刷十道题,试一试, 层序遍历并不难,大家可以很快刷了十道题。

2023-08-29 18:51:57 105 1

原创 代码随想录算法训练营第十四天 | 二叉树理论基础,递归遍历,迭代遍历,统一迭代

二叉树理论基础

2023-08-23 00:27:31 103

原创 代码随想录算法训练营第十三天 | 239. 滑动窗口的最大值,347. 前K个高频元素,栈与队列总结

之前讲的都是栈的应用,这次该是队列的应用了。本题算比较有难度的,需要自己去构造单调队列,建议先看视频来理解。重点:1. 单调队列思路:1. 自定义一个队列2. 每当新加入一个元素时,判断它是否比前面的元素大,如果是的话,把前面比他小的元素全部pop出队列3. 窗口往后滑动时,需要判断当前队列口的元素是否为窗口剔出的元素。

2023-08-22 00:10:02 75 1

原创 代码随想录算法训练营第十一天 | 20. 有效的括号,1047. 删除字符串中的所有相邻重复项,150. 逆波兰表达式求值

第三种情况:遍历字符串匹配的过程中,栈已经为空了,没有匹配的字符了,说明右括号没有找到对应的左括号return false。第一种情况:已经遍历完了字符串,但是栈不为空,说明有相应的左括号没有右括号来匹配,所以return false。1. 一个栈放遍历过的元素,当当前遍历的元素和栈顶元素相同时,说明是两个相邻的相同元素,从栈中pop。第二种情况:遍历字符串匹配的过程中,发现栈里没有要匹配的字符。讲完了栈实现队列,队列实现栈,接下来就是栈的经典应用了。字符串遍历完之后,栈是空的,就说明全都匹配了。

2023-08-20 18:25:23 39 1

原创 代码随想录算法训练营第十天 | 栈与队列理论基础,232. 用栈实现队列,225. 用队列实现栈

把que1最后面的元素以外的元素都备份到que2,然后弹出最后面的元素,再把其他元素从que2导回que1。可能大家惯性思维,以为还要两个队列来模拟栈,其实只用一个队列就可以模拟栈了。,再从出栈弹出数据,如果输出栈不为空,则直接从出栈弹出数据就可以了。了解一下 栈与队列的内部实现机制,文中是以C++为例讲解的。大家可以先看视频,了解一下模拟的过程,然后写代码会轻松很多。建议大家掌握一个队列的方法,更简单一些,可以先看视频讲解。1. 使用两个栈,一个是入栈,一个是出战。队列是先进先出,栈是先进后出。

2023-08-20 00:50:47 93 1

原创 代码随想录算法训练营第九天| 28. 实现strStr(),459. 重复的子字符串,字符串总结,双指针回顾

因为大家算法能力还没到,细扣很难的算法,会把自己绕进去,就算别人给解释,只会激发出更多的问题和疑惑。所以大家先了解大体过程,知道这么回事, 等自己有算法基础和思维了,在看多看几遍视频,慢慢就理解了。因为KMP算法很难,大家别奢求 一次就把kmp全理解了,大家刚学KMP一定会有各种各样的疑问,先留着,别期望立刻啃明白,第一遍了解大概思路,二刷的时候,再看KMP会好懂很多。或者说大家可以放弃一刷可以不看KMP,今天来回顾一下之前的算法题目就可以。

2023-08-19 00:19:33 115

原创 代码随想录算法训练营第八天| 344. 反转字符串,541. 反转字符串II,剑指Offer05. 替换空格,151. 翻转字符串里的单词,剑指Offer58-II.左旋转字符串

建议: 本题是字符串基础题目,就是考察reverse函数的实现,同时也明确一下平时刷题什么时候用库函数,什么时候不用库函数。建议:本题又进阶了,自己先去独立做一做,然后在看题解,对代码技巧会有很深的体会。1. 每2k个字符处理一次,所以只要循环的时候 i += (2 * k) 就可以了。建议:对于线性数据结构,填充或者删除,后序处理会高效的多。剑指Offer 05.替换空格。541. 反转字符串II。

2023-08-17 00:52:05 44 1

原创 代码随想录算法训练营第七天| 454. 四数相加II,383. 赎金信,15. 三数之和,18. 四数之和,哈希表总结

建议:本题是使用Map巧妙解决的问题,好好体会一下哈希法如何提高程序执行效率,降低时间复杂度,当然使用哈希法会提高空间复杂度,但一般来说我们都是舍空间换时间, 工业开发也是这样。建议:本题虽然和两数之和很像,也能用哈希法,但用哈希法会很麻烦,双指针法才是正解,可以先看视频理解一下双指针法的思路,文章中讲解的,哈希法很麻烦。1. 先把前两个数组的不同下标的和用Map记录下来,然后用0 - 后两个数组的和来对Map进行查找,找到了就加上Map的value值。454.四数相加II。454.四数相加II。

2023-08-16 00:38:07 71 1

原创 代码随想录算法训练营第六天| 哈希表理论基础,242. 有效字母异位词,349. 两个数组的交集,202. 快乐数, 1. 两数之和

总结一下,当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。但是哈希法也是牺牲了空间换取了时间,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。242.有效的字母异位词建议: 这道题目,大家可以感受到数组用来做哈希表给我们带来的遍历之处。题目链接/文章讲解/视频讲解:代码随想录重点:1. 因为总共只有26个字母,所以用数组来作哈希表2. hashfunction为与 'a' 的ASCII码的差值// 如果长度都不相等,直接返回false。

2023-08-15 00:42:28 134

原创 代码随想录算法训练营第四天| 24. 两两交换链表中的节点,19. 删除链表的倒数第N个节点,面试题 02. 07. 链表相交,142. 环形链表II,链表总结

因为我们是要删除倒数第N个节点,那么快慢指针中间就要相差N个节点来同时移动,这样当快指针指向NULL时,慢指针就正好指向了倒数第N+1个节点。双指针的操作,要注意,删除第N个节点,那么我们当前遍历的指针一定要指向 第N个节点的前一个节点,建议先看视频。本题链表操作就比较复杂了,建议大家先看视频,视频里我讲解了注意事项,为什么需要temp保存临时节点。本题没有视频讲解,大家注意 数值相同,不代表指针相同。保证了第一对pair节点和其余pair节点的操作一致。和模拟操作的操作一样,但要考虑清楚终止条件。

2023-08-13 23:26:24 41

原创 代码随想录算法训练营第三天| 链表理论基础,203.移除链表元素,707.设计链表,206.反转链表

链表理论基础

2023-08-12 11:45:03 65

原创 代码随想录算法训练营第二天| 977. 有序数组的平方,209. 长度最小的子数组,59. 螺旋矩阵II,数组总结

2. 既然是窗口的终止位置,我们只需要先固定好起始位置,循环改变窗口的终止位置,一旦窗口中的元素的和大于等于target,我们就可以开始移动起始位置来不断缩小窗口的大小,期间不断更新我们所记录的最小长度。1. for循环的变量应该是窗口的终止位置,如果是起始位置的话,相当于还是终止位置不断变化,遍历完所有元素,跟暴力破解是没区别的。: 本题关键在于理解滑动窗口,这个滑动窗口看文字讲解 还挺难理解的,建议大家先看视频讲解。: 本题关键还是在转圈的逻辑,在二分搜索中提到的区间定义,在这里又用上了。

2023-08-12 00:05:54 51

原创 代码随想录算法训练营第一天 | 704. 二分查找,27. 移除元素

因为左闭右闭,所以left和right可以相等,while循环条件为left

2023-08-11 13:37:58 93

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除