自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法训练Day18——530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先

法一:直接中序遍历成有序数组,考察相邻元素的最小差值即可。法二:双指针法(cur、pre)让遍历的过程中就得出差值,如下图所示:但有一个问题:如何才能让pre一直跟在cur的后面呢?经过观看视频,我才了解到如果在左中右的“中”部分一直有一个pre = cur就可以实现。

2025-03-31 17:26:24 484

原创 算法训练Day17——654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树

通过同样的遍历方向,来保证两棵树的遍历是同步进行。这道题要学习的点就是两棵树。个人代码如下,供参考。98.验证二叉搜索树。很相似,个人代码如下。

2025-02-25 22:10:22 347

原创 算法训练Day16——112. 路径总和 113. 路径总和ii 106.从中序与后序遍历序列构造二叉树

看完视频之后,注意回溯,因为拿不准返回值,我个人还是喜欢分成两个函数去写,

2025-02-25 14:29:26 284

原创 算法训练Day15——110.平衡二叉树 、257. 二叉树的所有路径、404.左叶子之和、222.完全二叉树的节点个数

对于递归函数的返回值,看看底层函数要给上层函数什么信息,例如要返回高度就int。普通二叉树的遍历方法已经独立完成。时间复杂度是O(n)。比较复杂),时间复杂度小于O(n)。递归回溯是一家,把它们放在一起。222.完全二叉树的节点个数。257. 二叉树的所有路径。

2025-02-19 12:45:03 236

原创 算法训练Day14—— 226.翻转二叉树 101. 对称二叉树 104.二叉树的最大深度 111.二叉树的最小深度

看完视频和链接之后,我强调几点:1.这道题前序和后续遍历好做,中序麻烦[画图理解]2.swap(root->left,root->right)就是把两个子树交换了,因为指针实际上就是地址数值!换了之后,left指向了原来右子树的地址3.递归三部曲:确定返回值和参数确定出口处理。

2025-02-11 23:15:12 462

原创 算法训练Day12——二叉树基础知识 二叉树递归遍历 层序遍历

基础部分卡哥已经讲的很详细了,笔者只记录一下易错点,如果想不起来可以回到文章链接去温习。1.满二叉树和完全二叉树的区别2.二叉搜索树和平衡二叉搜索树的区别。

2025-02-10 22:19:28 334

原创 算法训练Day11——150. 逆波兰表达式求值 239. 滑动窗口最大值 347.前 K 个高频元素

题目链接:150. 逆波兰表达式求值 - 力扣(LeetCode)视频链接:栈的最后表演! | LeetCode:150. 逆波兰表达式求值_哔哩哔哩_bilibili文章链接:代码随想录我最开始是用模拟的方式去做的,后缀表达式算值的步骤如下:我根据上图模拟写出的代码,补充一点:string str要转成整数可以用stoi(str)来实现.239. 滑动窗口最大值 题目链接:239. 滑动窗口最大值 - 力扣(LeetCode)文章链接:代码随想录视频讲解:单调队列正式登场!| LeetCode:

2025-02-09 21:24:05 642

原创 算法训练Day10——232.用栈实现队列 225. 用队列实现栈 20. 有效的括号 1047. 删除字符串中的所有相邻重复项

再从出栈弹出数据,2.如果输出栈不为空,则直接从出栈弹出数据就可以了。稍微复习一下STL中的stack的定义和方法。

2025-02-06 20:09:06 483

原创 算法训练Day9——151.翻转字符串里的单词 卡码网 55.右旋转字符串 kmp算法的过程了解

举个例子,源字符串为:"the sky is blue "这三个步骤中,移除多余空格这题想要达成卡哥的""的要求,那就得用双指针去像移除元素一样移除空格.视频下方评论里面的网友给出我更易理解的做法。

2025-02-05 20:38:06 481

原创 算法训练Day8| LeetCode344. 反转字符串(双指针);541. 反转字符串II(模拟);54.替换数字

这个原地操作的原理我去问deepseek,它的回答如下:a ^ a = 0(任何数与自身异或结果为0)。a ^ 0 = a(任何数与0异或结果不变)。:异或操作顺序不影响结果。(假设初始时s[i] = as[j] = b等价于。此时s[i]存储了a和b的异或结果,而s[j]仍为b。等价于。根据交换律和自反性,这简化为a(因为b ^ b = 00 ^ a = a此时s[j]变为as[i]仍为a ^ b。等价于。同样利用交换律和自反性,这简化为ba ^ a = 00 ^ b = b此时s[i]

2025-02-04 10:34:56 397

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

这道题我个人直观感觉是的拓展,但搞得我不知道该构建哈希表来find什么(比如说我遍历到数组1的元素a,我不知道在下一个数组构成的hash表来find什么元素)。然后就去看参考视频了。卡哥的视频解答了我的疑惑我们可以让前两个数组相加划为一块,后两个元素相加划为一块。但也有可能会产生另一个问题。因为当我们构建一块的过程中是要遍历相加的,这种方法的时间复杂度是O(),而两两划分的时间复杂度是O(进而衍生到如果出现“六数相加”、“八数相加”的题目,为了算法时间复杂度,在选用哈希数据结构的时候,也会陷入纠结。

2025-02-01 15:48:03 693

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

详细的哈希表理论可以点击上面链接查看。因为我不熟悉c++容器,所以借着这几天的练习,我打算熟悉一下常用的容器操作。

2025-01-27 22:37:08 1592

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

参考视频图1.1:交换链表节点示意图如上图所示,要交换1、2两个节点其实还涉及到cur和3两个节点。观看完参考视频和动图之后我总结出以下答案:一.节点交换就从左到右去进行就可以了。二.多少个temp取决于从左到右模拟的过程中有哪些节点找不到。所以综上所述,我们需要两个临时节点tmp,tmp1,分别用来保存节点1和节点3。接下来还有一个小细节:1.遍历的终止条件如何确定?卡哥说19.删除链表的倒数第N个节点删除某一个节点需要它的前置节点。但怎么样遍历一遍就可以去删倒数第n个节点我没想明白。

2025-01-25 14:26:41 1636

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

数组查询时间复杂度是O(1),增删时间复杂度是O(n);链表查询时间复杂度是O(n),增删时间复杂度是O(1)。所以数组查询方便,链表增删方便。因为,所以移除链表元素有两种情况,第一种是移除的是头指针所在的节点(它没有前一个节点),第二种是移除非头指针所指向的节点。但这样分类讨论起来有点麻烦,所以我更喜欢在头指针之前创建个虚拟头节点(dummy head)去做(记得最后delete dummy head来释放内存),这样链表的每一个节点都会有前置节点去删除了,免去了分类讨论的情况。

2025-01-24 23:00:38 1755

原创 代码随想录算法训练营第二天 | 209.长度最小的子数组,59.螺旋矩阵II,区间和

这个题目最直白的想法就是用暴力算法,用两层for循环把所有子数组的情况列出来并把最小的子序列找出来,,估计会超时。尝试想了十几分钟也没有什么很好的思路,所以就去看卡哥的视频了,视频链接为结合着视频底下的评论看完视频,收获良多。总结一下滑动窗口思路:开始指针和结尾指针分别指向子数组的头和尾;第一层for循环是用结尾指针遍历的,当子数组和超过target值时,先更新子数组最小长度,然后就要开始对开始指针进行挪动,来缩小窗口范围,最终得到当前尾指针子序列最小长度。图示如下(选自怎么能想到用滑动窗口的呢?

2025-01-23 18:49:08 591

原创 代码随想录算法训练营第一天 | 704. 二分查找,27. 移除元素 ,977.有序数组的平方

这道题看到原数组是“有序”,就想着用二分法去做,时间复杂度为(logn)。做完一遍之后,不明白“左闭右开”的写法是什么意思,然后就去代码随想录那里去温习。其中快指针是遍历原数组,慢指针是新数组的下标,两者都是从0开始找到合适的元素就赋值给慢指针并且更新慢指针即可。,像归并排序一样,比较平方后的大小,并将大的元素赋值结果数组中。但因为平方后的数组(如果有负数元素)变化的趋势是左右两端为大,中间逐渐小。其实这道题也可以用最直观的“先平方,再排序”来做,最不济的冒泡排序复杂度也就是O(977.有序数组的平方。

2025-01-22 21:08:49 445

空空如也

空空如也

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

TA关注的人

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