自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法从0到1 Day 17 二叉树part 06

看到public int getMinimumDifference(TreeNode root)题目的返回值是int类型,当时我尝试写了一下,root==null的时候我不知道返回什么,0?似乎都是不行的,所以我就定义了traversal,如何把返回的minValue放到全居遍历中,主函数调用traversal之后,return全局变量就可以了。很多递归逻辑,要求我们定义的是全局遍历,因为我们一次递归的变量我们是存留不住的,等递归结束了,我们就跳出了。一定要后序遍历,因为我们需要根据左右返回的结果。

2025-06-09 18:11:57 591

原创 从0到1算法之类 路途漫漫 Day 16 二叉树part 05

本文摘要总结了LeetCode二叉树相关问题的解题思路。654题构建最大二叉树时,通过递归划分数组区间(左闭右开),找到最大值作为根节点;617题合并二叉树采用递归同步遍历,若节点为空则用另一棵树对应节点替代;700题在二叉搜索树中查找值,利用BST特性递归搜索左/右子树。关键点在于:1)递归时处理好边界条件(如区间划分、空节点处理)2)利用树的性质(如BST的有序性)优化搜索路径3)通过第一层递归逻辑推导整体解法。代码实现中需注意数组下标处理、返回值传递等细节。

2025-06-07 18:20:55 969

原创 从0到1 算法之路Day 16 二叉树part 04 还是需要好好坚持

摘要本文总结了二叉树相关问题的三种解法:层序遍历、递归回溯和静态变量的使用。对于513题找树左下角的值,层序遍历通过队列实现,递归回溯通过深度优先搜索记录最左节点。112题路径总和采用隐式回溯方法,在递归过程中自动恢复参数值。113题路径总和II则需要在遍历过程中收集所有符合条件的路径。文章还讨论了静态变量在递归中的使用限制和隐式回溯的实现原理。

2025-06-05 20:27:39 608

原创 0到1算法之路 daDay 15 二叉树part 03

本文总结了二叉树相关算法题的解法:1) 计算完全二叉树节点数时,利用满二叉树特性优化递归;2) 判断平衡二叉树通过后序遍历返回高度差;3) 收集所有路径时使用递归和回溯,注意字符串拼接时机。关键点在于:递归终止条件设定、回溯操作的正确位置、平衡判断时的高度差计算以及路径收集时的节点处理顺序。通过拆分问题和合理设计递归逻辑,可以高效解决这些二叉树问题。

2025-05-27 08:40:30 994

原创 算法从0到1 Day 14 二叉树part 02

本文介绍了二叉树相关的几个算法问题及其解决方案。首先,讨论了翻转二叉树的实现,通过递归或层序遍历交换左右子树。其次,探讨了对称二叉树的判断,通过后序遍历比较左右子树的对称性。接着,讲解了如何计算二叉树的最大深度,使用层序遍历或递归方法。最后,介绍了二叉树的最小深度计算,强调在处理单子树节点时的特殊处理。这些算法展示了二叉树遍历和递归的常见应用。

2025-05-21 20:40:10 1151

原创 算法从0到1,Day 13二叉树part 01

二叉树节点定义。

2025-05-15 15:03:55 1102

原创 算法之路从0到1 Day 11栈与队列part 02

本文主要讨论了栈与队列在算法中的应用,重点介绍了逆波兰表达式求值和滑动窗口最大值两个问题。在逆波兰表达式求值中,通过栈结构处理运算符和数字,分别展示了存储字符串和数值的两种实现方式,并比较了parseInt和valueOf的区别。在滑动窗口最大值问题中,使用双端队列实现单调队列,确保窗口内的最大值能够高效获取,并详细分析了代码中的关键点和常见错误。通过这两个问题,展示了栈与队列在算法中的灵活应用。

2025-05-13 15:21:03 764

原创 从0开始学算法 Day 10栈与队列1 与其在错误的道路上狂奔,不如在真道上跛行

两个栈实现一个队列此代码优化java基础小问题:似乎 private Stack stackIn;不能加上static,每个栈都是单独的​ 一开始的想法:队首(第一个队列)弹出 size-1个元素到尾部(或者第二个队列,然后再获取那最后一个元素一个队列就可以了,size-1来过滤到最后一位的元素;若是弹出,就手动弹出一次,若是获取首位,弹出返回,而后再次塞入建议在写代码之前要分析好有哪几种不匹配的情况,如果不在动手之前分析好,写出的代码也会有很多问题。

2025-05-10 15:43:24 698

原创 算法从0到1,Day 09字符串2,希望可以坚持下去

而后,end=start+1 (end=start也可以,但是start+1不会错),我们while判断,是否小于n,判断遇到空格就会停止移动end,end当前若是空格就会停止移动。当然也可以用异或的方法交换顺序(要用字符数组这样需要额外空间),若在本字符串中修改,就可能要用setCharAt。end落在单词结尾后的那个空格处,然后就调用单词翻转方法。然后就将start=end+1;end是指向空格,start+1就指向下一个单词。中指定索引(0 ≤ index < 字符串长度)的字符替换为我们给定的。

2025-05-09 21:32:33 1076

原创 Day 08字符串1

3.看看是否能获取start+k到start+2k 这么多的元素,如果不能(可能是start+2k超出了length),那么就获取start+k到length 将start+k到后半段 拼接进去。看看是否能获取start到start+k 这么多的元素,如果不能就获取start到length个,然后做翻转(无论是否满足前k个我们都做翻转) 用StringBuilder去append。这里有个位运算,刚刚开始不太理解,把s[l]和s[r]换成a和b就好理解了。

2025-05-07 21:29:48 451

原创 Day 07 哈希2

后者应该会出现多余的字母,先用后者存map,(这个字母出现次数),然后用前者减减。若为正,是后者有多余的字母。map存的是这个“和”出现的次数,后面CD数组符合get的条件,就累加value的值而不是+1,因为即使A和B取数字成的和相同,但是它们还是取自不同位置。有两个选择一个数组为一组,而另外三个数组为一组, 这样前一个复杂度为n^3方 这样也能用同样方法做,但是复杂度高。先处理前两个数组,再处理后两个数组,后面的for循环是去查前一个for循环存入的是否有我们想要的元素。

2025-04-29 09:04:52 415

原创 Day06 哈希

好久没有打卡了,蓝桥杯刚刚比完,很多东西(jdj要义、英语、苍穹外卖项目、前端)都要开始着手准备,这个hash章节本来一天的内容,我断断续续写了一个星期,希望再接再厉内容小是可以使用数组作为我们的哈希表的 我们这里的26个字母,ASCII码是连续的,我们不用在意每个字母的ASCII码,我们只需要求出相对数值就可以。小内容用数组要快一些。

2025-04-23 15:28:10 429

原创 从0到1算法刷题day04● 24. 两两交换链表中的节点 ● 19.删除链表的倒数第N个节点 ● 面试题 02.07. 链表相交 ● 142.环形链表II (没有时间紧迫感被推迟了一天打卡)

下午上三节javaweb课和晚餐后时间补的(哭),蓝桥杯不怎么考数据结构,但我报算法训练营,前半部分要打卡数据结构,我怎么样都要刷完,并且算法也要争取攻克。当时因为用cur和temp1这两个指针就够了,结果需要三个指针,有时候还是不要吝啬空间。我们思想的精义就是,保存在指向操作后丢失的节点,丢什么存什么,但要在这之前存储。一次循环轮换一次指针的位置。

2025-03-17 21:36:08 731

原创 从0到1算法刷题补day03剩余任务 707.设计链表 206.反转链表

【代码】从0到1算法刷题补day03剩余任务 707.设计链表 206.反转链表。

2025-03-15 19:09:34 243

原创 从0到1算法刷题day03 203.移除链表元素

null),判断下一个节点是否为我们要删除的值,因为会访问空指针了 错误:cur!3.指针遍历要另外定义一个指针,而不能使用dummy,免得找不到链表,cur指针必须要在定义head的前一位也就是指向dummy,这样方可发挥虚拟头节点的功用。定义1.在首节点前的虚拟头节点和2.指向虚拟头节点的指针 为了统一遍历和删除各节点,而不必考虑首节点的情况。1.这里return返回的是新的头节点(虚拟头节点的下个节点),免得老的头结点删去,从而找不到链表了。5.开头链表为空时判断返回。

2025-03-14 21:45:47 224

原创 从0到1算法刷题day02 209.长度最小的子数组 59.螺旋矩阵II

犯错点:1.将offset设置为0,需要直到我们本边的最后一个节点是不在本次for中遍历的,数组结束遍历下标还有点糊涂,正常考虑为<n 这里应该是<n-offset(1) 2.n为奇数情况,填充中心的判断n%2==2,而不是“(n / 2) % 2 == 1 || n==1”犯错点:1.for中的“i”是指向起始还是终止位置2.length的初始化的问题3.起始指针移动时,是先减去nums[left]还是left++4..sum一直不满足我们的target时,返回的时候的操作。

2025-03-13 21:22:15 426

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

代码随想录算法训练营第一天 | 704. 二分查找,27. 移除元素记得半年前跟了一会,后来到二叉树后面部分就坚持不下去,因着报了蓝桥杯的缘故(PS:我还报了蓝桥杯14天的冲刺营,3.4号开班),索性报了代码随想录的训练营,一面是督促自己学习,一面是为了后面的职业发展做准备。正好一个月蓝桥杯(31天),希望能好好预备,有点算法基础,但求个省二就好,荒废了一个寒假。。。

2025-03-12 20:01:17 552

空空如也

空空如也

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

TA关注的人

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