自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法一刷总结

很多人说,学习要坚持,但是坚持这俩字看起来苦大仇深的,往往一开始就劝退了。经验之谈是,开始的时候不要抬头看,不要去看山有多高,路有多远,看了并不是就到了,不如专注脚下的路。等走过一个山峰,驻足休息时回头看,会发现原来已经走了很远。这时候才意识到,原来已经坚持到这里了。这种后知后觉,是伴随成就感一起产生的,会产生越坚持越有成就感的正向激励。在整个刷题过程中,我没有去看题目难度,也没有默认算法很难,任何这种心理暗示,都会增加内耗。这也是刷题整个过程心态能一直稳定的原因。

2024-04-10 14:08:56 176

原创 代码随想录算法训练营第二十三天|669、108、538

迭代的方法,其实就是模拟取中间元素,然后不断分割去构造二叉树的过程。可以通过三个队列来模拟,一个队列放遍历的节点,一个队列放左区间下标,一个队列放右区间下标。笔记:累加的顺序是右中左,所以我们需要反中序遍历这个二叉树,然后顺序累加就可以了。递归的方法,本质就是寻找分割点,分割点作为当前节点,然后递归左区间和右区间。笔记:左闭右闭,小于区间指针向左,大于区间指针向右,在区间范围内,处理左子树小于区间和右子树大于区间。108.将有序数组转换为二叉搜索树。538.把二叉搜索树转换为累加树。

2024-02-28 15:41:10 329 1

原创 代码随想录算法训练营第二十二天|235、701、450

笔记:自上向下去递归遍历,第一次遇到 cur节点是数值在[q, p]区间中,那么cur就是 q和p的最近公共祖先。因为没有中节点的处理逻辑,遍历顺序无所谓。不需要遍历整棵树,找到结果直接返回。笔记:利用搜索树的性质,找到合适的空节点位置插入元素即可。注意:二叉搜索树可以为空树,结果需要重建树;只要不为空,都可以在原结构上增加节点,不需要重建树。笔记:删除节点涉及到结构调整。针对可能发生的五种情况分别做处理。235. 二叉搜索树的最近公共祖先。701.二叉搜索树中的插入操作。450.删除二叉搜索树中的节点。

2024-02-04 14:49:53 365 1

原创 代码随想录算法训练营第二十一天|530、501、236

笔记:需要从底向上遍历,只能通过后序遍历实现。即使已经找到结果了,依然要把其他节点遍历完,因为要使用递归函数的返回值做逻辑判断。迭代法不适合模拟回溯的过程。和 530差不多双指针思路。用两个变量分别定义最多次数,和某个值出现的总次数。二叉树采用中序遍历其实就是一个有序数组。cur、pre双指针。530.二叉搜索树的最小绝对差。236. 二叉树的最近公共祖先。501.二叉搜索树中的众数。

2024-02-02 22:57:57 370

原创 代码随想录算法训练营第二十天|654、617、70、98

笔记:类似用数组构造二叉树的题目,每次分隔尽量不要定义新的数组,而是通过下标索引直接在原数组上操作,这样可以节约时间和空间上的开销。如果让空节点(空指针)进入递归,就不加if,如果不让空节点进入递归,就加if限制一下, 终止条件也会相应的调整。笔记:迭代法中,如果搜索到了val,要将该节点返回。二叉搜索树,不需要回溯的过程,因为节点的有序性就帮我们确定了搜索的方向。笔记:不是单纯的比较左节点小于中间节点,右节点大于中间节点,要比较左子树所有节点小于中间节点,右子树所有节点大于中间节点。

2024-02-01 20:12:47 347 1

原创 代码随想录算法训练营第十八天|513、112、113、106、105

笔记:可以用递减统计这一条路径的和,让计数器count初始为目标和,然后每次减去遍历路径节点上的数值。相比累加代码更简单。递归要不要返回值的判断。笔记:中序数组大小一定是和前/后序数组的大小相同的,可以按照左中序数组的大小来切割前/后序数组。难点:切割、边界值确认。笔记:层序-在树的最后一行找到最左边的值;递归-深度最大的叶子节点一定是最后一行。106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树。112. 路径总和 113.路径总和ii。513.找树左下角的值。

2024-01-31 21:57:34 409

原创 代码随想录算法训练营第十七天|110、257、404

递归的遍历顺序为后序遍历(左右中),是因为要通过递归函数的返回值来累加求取左叶子数值之和。迭代前中后序都可以,统计左叶子节点之和。递归求高度的返回值,如果当前入根节点的二叉树已经不是二叉平衡树了,还返回高度的话就没有意义了,返回-1作为标记。笔记:通过前序遍历,让父节点指向孩子节点,找到对应的路径。隐形回溯就是把左右节点的路径独立,互相不影响。其实本题有点文字游戏,搞清楚什么是左叶子,剩下的就是二叉树的基本操作。笔记:左叶子定义和判断(要通过节点的父节点来判断其左孩子是不是左叶子)。

2024-01-30 22:59:46 392 1

原创 代码随想录算法训练营第十六天|104、111、222

笔记:完全二叉树写法,关键在于如何去判断一个左子树或者右子树是不是满二叉树。是则用公式计算,不是则继续遍。笔记:深度和高度的区别,以及求法:深度从上到下求(前序,中左右),高度从下到上求(后序,左右中)。笔记:求二叉树的最小深度和求二叉树的最大深度的差别主要在于处理左右孩子不为空的逻辑。222.完全二叉树的节点个数(优先掌握递归)111.二叉树的最小深度 (优先掌握递归)根节点的高度就是这棵树的最大深度。104.二叉树的最大深度。

2024-01-30 15:41:25 337 1

原创 代码随想录算法训练营第十五天|层序遍历、226、101

笔记:关键在于确定什么时候换行。二叉树的层序遍历,就是图论中的广度优先搜索在二叉树中的应用。了解了层序遍历的原理,可以举一反三很多层序遍历的题目。笔记:其实我们要比较的是两个树(这两个树是根节点的左右子树),比较的是两个子树的里侧和外侧的元素是否相等。笔记:只要把每一个节点的左右孩子翻转一下,就可以达到整体翻转的效果。101. 对称二叉树 (优先掌握递归)

2024-01-10 17:58:55 341

原创 代码随想录算法训练营第十四天 | 144、145、94

将访问的节点放入栈中,把要处理的节点也放入栈中,紧接着放入一个空指针作为标记。这种方法也可以叫做标记法。中序遍历处理顺序和访问顺序是不一致的,需要借用指针的遍历来帮助访问节点,栈则用来处理节点上的元素。解决迭代中序遍历中,访问节点(遍历节点)和处理节点(将元素放进结果集)不一致的情况。递归三要素:确定递归函数的参数和返回值,确定终止条件, 确定单层递归的逻辑。今日主题:二叉树、递归、迭代。前序和后序输出答案顺序相反。

2024-01-09 16:10:35 394

原创 代码随想录算法训练营第十三天 | 239、347

今日主题:队列,数据结构239. 滑动窗口最大值 (一刷至少需要理解思路笔记:关键是想清楚滑动窗口怎么维护,窗口内数字从大到小排序,如何进入和离开这个窗口347.前 K 个高频元素。

2024-01-08 16:19:41 330

原创 代码随想录算法训练营第十一天 | 20、1047、150

栈为什么适合做这种类似于消除的操作,因为栈帮助我们记录了 遍历数组当前元素时候,前一个元素是什么。如果题目限制不能用栈,可用双指针法,思路:s[i]==s[i-1],将s[i+1]赋值给s[i]。递归的实现就是:每一次递归调用都会把函数的局部变量、参数值和返回地址等压入调用栈中。然后递归返回的时候,从栈顶弹出上一次递归的各项参数。1047. 删除字符串中的所有相邻重复项。笔记:栈的经典应用。可以用字符串作为栈。150. 逆波兰表达式求值。

2024-01-07 14:48:40 343 1

原创 代码随想录算法训练营第十天 | 232、225

笔记:队列本身比栈多一个出入口,还要用两个队列去模拟一个栈,关键还是思路。笔记:关键是实现模拟的思路,看明白动画。今日主题:栈、队列、数据结构。225. 用队列实现栈。232.用栈实现队列。

2024-01-05 20:36:31 337 1

原创 代码随想录算法训练营第九天(难)| 28、459

是KMP算法的一个应用,需要建立在理解经典kmp的基础上。28. 实现 strStr() (经典kmp)459.重复的子字符串 (本题可以跳过)笔记有点水,因为真的搞不懂……笔记:一看就会,一写就废。

2024-01-04 22:25:39 327 1

原创 代码随想录算法训练营第八天| 344、541、151、卡码54、55

151.翻转字符串里的单词。卡码网:55.右旋转字符串。541. 反转字符串II。卡码网:54.替换数字。

2024-01-04 20:23:32 370 1

原创 代码随想录算法训练营第七天| 454、383、15、18

重难点:用哈希涉及太多去重。剥洋葱思路:先锚定第一个数,另外两个数用双指针找出来。将暴力解法时间复杂度降低一个等级。但是没看懂字典方法的查重。重难点:如何用判断条件确保magazine 中的每个字符只能在 ransomNote 中使用一次。重难点:三数之和的升级版,多一层。类似的n数之和都可以用这个思路。字典方法后面可以学习一下。454.四数相加II。

2024-01-02 20:33:38 333

原创 代码随想录算法训练营第六天| 242、349、202、1

今日主题:哈希法题目链接/文章讲解/视频讲解: 代码随想录相关题目383.赎金信(opens new window)49.字母异位词分组(opens new window)438.找到字符串中所有字母异位词题目链接/文章讲解/视频讲解:代码随想录题目链接/文章讲解:代码随想录题目链接/文章讲解/视频讲解:代码随想录

2024-01-01 16:51:50 331

原创 代码随想录算法训练营第四天| 24、19、面试题02.07、142

题目链接/文章讲解/视频讲解: 代码随想录题目链接/文章讲解/视频讲解:代码随想录题目链接/文章讲解:代码随想录题目链接/文章讲解/视频讲解:代码随想录

2023-12-30 22:19:20 352 1

原创 代码随想录算法训练营第三天| 203.移除链表元素 707.设计链表(debug) 206.反转链表

203.移除链表元素 707.设计链表206.反转链表

2023-12-29 21:57:01 320

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

977.有序数组的平方 209.长度最小的子数组 59.螺旋矩阵II

2023-12-28 20:24:46 419

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

704. 二分查找、27. 移除元素

2023-12-27 13:26:43 383

空空如也

空空如也

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

TA关注的人

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