自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 《算法通关村--轻松搞定二叉树路径总和》

3、把减去的值继续往深处递归,如果左子叶或者右子叶有一条路径等于目标值就为true,反之为false。该题目是一道标准的递归算法的题目,可以拆解成具体的每个子步骤去执行,对于该题其实就是根据选择深度优先遍历的其中一种方法去查找每个节点的值并减去,直到找到最后的叶子节点如果刚刚好剩余的值等于叶子节点的值那就说明有目标值,反之则没有。这里这道题是求是否有一个目标的值,其实也可以演变成求每条路径的和的集合是什么。二叉树的深度优先算法里,求路径总和如leecode的112题,给你二叉树的根节点。

2023-09-12 12:41:47 83

原创 《算法通关村-迭代实现二叉树的后序遍历》

反转法,以上面这个测试用例举例子,后序遍历输出的是[6,7,2,4,5,3,1],先序输出的是[1,2,6,7,3,4,5], 后序反转后是[1,3,5,4,2,7,6],那么会发现,先序遍历是中左右,如果按中右左去访问上面的树就是[1,3,5,4,2,7,6],也就是后序的反转。二叉树的层序遍历也就是广度优先遍历(BFS)说明在前面的文章已经写过了,下面说一下深度优先遍历(DFS),那深度优先遍历一般有三种:前序中序后序遍历。下面介绍两种吧,反转法和访问标记法。

2023-08-11 16:35:13 88 1

原创 《算法通关村-二叉树的遍历原来如此简单》

那这里的要求是偶数列的要从后往前遍历,那就可以建立一个双端队列奇数列往后插入,偶数列往头插入,再把这个双端队列初始化给新建的list去存储,注意的是这里可以通过一个变量去判断奇数列还是偶数列,这里用布尔型的flag每层遍历完取反就比较巧妙,也可以建立一个count = 1,判断%2是否有余数来判断奇偶,但是后面这个如果这个数是层次是无限大的话,这个count就有可能越界。这两天终于到了树结构的算法了,树结构一直是工作中的重点,也是难点,有点小爬坡的意思,难度自然会有但是掌握了相应的模板也不会变得很难。

2023-08-09 15:29:31 73 1

原创 《算法通关村--如何将中序和后序来恢复一颗二叉树》

那么根据以上规则,第三轮 前序为[3 4 8 6 7 5]后序为[8 7 6 5 4 3],那这次根据后序原则3为根节点,那[4 8 6 7 5]就为右节点了,第四轮前序[4 8 6 7 5]、后序为[8 7 6 5 4],根节点为4 [8 6 7 5]为右节点,第五轮[8 6 7 5]、[8 7 6 5],5为根节点,[8 6 7]为左节点,右边的那部分也可以按照同样的规则确定出来,最终的形状如下,有兴趣的可以去尝试一下。第三次访问的左右中称为后序遍历。借用一个二叉树的图,这是一个简单的二叉树的形状。

2023-08-03 16:55:09 65

原创 《算法通关村黄金挑战---K个一组的反转》

我觉得该题最难的地方在于理解可以在循环里面一开始end里面的判空,就是pre指针和end指针是同时指向完成端的最后一个节点,因为开始的虚拟头节点等同于完成端,那么在end进行双重循环的时候也要进行判空,其实主要指针走的就是end。此,意思就是有等于k个的元素节点要进行反转,少于k个的保持原来的结构。题目的解题画图借用一下。

2023-07-31 11:06:21 51 1

原创 《算法通关村第二关-----指定区间反转和两两交换链表中的节点》

上面leetcode92题借教官的话,两种方法和其他的链表解题的方法差不多,一个是插入法另外一个就是在链表上直接操作进行反转。

2023-07-27 09:15:29 77 1

原创 《算法通过村第二关-终于学会链表反转了》

那么链表反转一般有两种方法,借用教官的话,带头节点和不带头节点的。1、那么先说第一种建立虚拟头节点辅助反转,该方法需要建立一个虚拟头节点,把每个节点给拆下来装进去,这里需要注意的一点就是不需要判空,因为这个节点已经指向空了。链表反转其实是一个链表操作的基础,涉及了很多操作,增、删、遍历等,其实链表反转在leetcode上面有很多个版本题目,2、第二种就是在原链表上进行操作,建立一个空节点pre,cur和next不断指向新节点和新节点的next。足以说明链表反转的重要性。

2023-07-25 14:17:05 22

原创 《算法通关村第一关--合并两个有序链表问题》

这个合并链表意思有点类似于把两个链表升序重新排序,那么可以建立一个新的链表,判断list1和list2的节点哪个小就先接入到新链表上面去,对于等于等情况就先走其中一个链表,至于是哪个并不是很重要因为后面的节点比相同节点小的时候就会回到另外一个链表。如果链表是 1->2->3->4->5 和 1->2->3,那么temp.next = list1!list1 : list2,就会将 temp.next 指向 list1的4->5。新链表是通过拼接给定的两个链表的所有节点组成的。

2023-07-23 12:38:43 30

原创 《算法通关村黄金挑战--链表中环的入口问题》

那么这个入口问题就等于是路程和速度的问题了,由于链表中每个节点的长度计算机默认是相等的,由快慢指针从头开始往后跑如果有环那么肯定就进入环中无限循环了,在学习操场400米跑过步的都能知道如果有速度差,在圆中跑那么绕圈的时候肯定有相遇的时候。至于其中的数学问题,最近没空研究,就是慢指针跑铁把和从快慢指针第一次相遇的点绕圈距离最终会在入口相遇有兴趣的也可以画一下距离去测试一下,如果快慢指针比不是1:2,而是其他的1:3,1:4,可能有不同的解法。那么最终就会在入口相遇,先记住结论吧,慢慢理解,最终代码如下。

2023-07-19 13:09:50 57

原创 《算法通关村第一关--链表经典问题之两个链表的第一个公共节点》

其实这里就是两条不相等的路径,那么在路径上有一个地方如果名字相同的话就存在公共节点,那么可以看成找两个速度一模一样的人去跑步,每次从一个节点跑到下一个节点的速度都是1,那么如果把这两个链表当成是一个链表的长度从A-->B的话,速度相同的两个人肯定会在有同一个地方的节点相遇,那么有的话是那个第一个公共节点了。以前在学校的时候没有好好学数据结构算法,一直也是断断续续,导致链表这块看起来就很头疼,其实就是C指针的内容,不熟悉的话还是很难的,其实也是复杂的,说一下感概吧,希望重新学习能完整的系统化。

2023-07-18 18:10:13 89 1

原创 《算法通过村第一关-链表青铜挑战笔记》

每个节点是由数据域和一个next节点构成,在节点没有串联在一起的之前,next的节点指向null。当多个节点链接在一起的时候,一般会有一个指针指向头节点head,next指向下一个节点,直到最后一个节点的next指向null。//由于在for里面创建的新节点,在else出现的就是第二个之后的节点,temp还指向上一个节点,所以next要指向当前创建的最新的节点。//头节点指向第一个创建的节点、保留头节点。//将temp指向最新的节点。Node temp = null//创建指向新节点的指针。

2023-07-18 17:01:12 77 1

空空如也

空空如也

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

TA关注的人

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