自定义博客皮肤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)
  • 收藏
  • 关注

原创 day20—二叉树part06

思路:和上一篇的构造二叉树差不多。采用递归法,先找到最大的中结点,然后再递归找到左右子树,这种递归想不明白时,可以先想第一层:找到一个跟结点,然后左右子树分别指向左右递归就好了。思路:双指针法,递归采用中序遍历,因为根据二叉搜索树的特性,其中序遍历的数组一定是单调递增的。pre记录前一个结点,每层遍历比较pre即可。思路:同时递归两颗二叉树,在root1上直接进行操作,避免了创建新的二叉树。思路:根据二叉搜索树的特性,本题可以用递归法和迭代法解决。注意:构造二叉树一定是用前序遍历,因为要先处理中结点。

2023-04-27 19:13:54 107

原创 day18—二叉树part5

思路:递归法,用一个双向队列来装遍历过程中变化的数组,遇到叶子结点并且加起来等于target,就把这个数组装到返回的集合ret中。思路:递归法,以后序数组的最后一个元素为切割点,切割中序数组和后序数组,直到叶子结点再返回,指向root的左右子树。思路:递归法遍历的时候加每个节点的值,直到叶子结点查看是否等于taget,回溯的时候再把对应的结点值减去。思路:跟106差不多。

2023-04-26 15:58:18 113

原创 day17—part4

思路:后序遍历递归求左右子树的高度,如果左右子树的高度差大于1就返回-1,即为非平衡二叉树。思路:递归法后序遍历,结果为:左子树的左叶子和➕右子树的左叶子和➕自己的左叶子。思路:第一次遇到回溯。每次递归完后同时进行回溯删掉集合中最后一个叶子元素。

2023-04-23 21:07:22 107

原创 day16—二叉树part03

思路:上一篇使用层序遍历(迭代法)AC了,这次使用递归法,后续遍历来求根结点的高度即为二叉树的最大深度。思路:求最大深度也就是求根结点的高度,所以可以使用递归法后序遍历求根结点的高度。这道题和求二叉树的最大深度差不多,只不过左右子树取较大值改为取较小值。注意:在比较左右子树的大小的时候,要判断其是否为空。是从根节点到最近叶子节点的最短路径上的节点数量。思路:可以使用递归法和迭代法。

2023-04-20 15:45:07 117

原创 day15—二叉树part02

思路:递归后序遍历,比较左右子树的外侧结点和比较左右子树的内侧结点,比较完结果返回给上一层。对称的特征是左子树经过翻转等于右子树。注意:需要一个变量size记录每一层需要弹出多少个元素,避免两层元素同时存在队列中时,不知道应该弹出多少个元素。类似图论的广度优先搜索,一层一层地遍历二叉树取出结果。思路:递归进行翻转,适合用前序和后序遍历。,因为每一层元素符合先进先出的特点。例题:102. 二叉树的层序遍历。

2023-04-19 19:44:45 73

原创 day14—初步认识二叉树

int val;} }

2023-04-19 16:20:37 73

原创 day13—栈和队列完结

单调队列常用来解决滑动窗口。优先级队列实现类似大顶堆、小顶堆的效果。

2023-04-18 16:59:26 67

原创 day11—栈和队列

思路:遍历数组,将数字放入栈,当遇到运算符时,再弹出两个元素进行加减乘除操作,然后放入栈,最后栈只剩一个算好的元素,返回即可。思路:依次往栈里面放元素,左括号就放入对应的右括号,当放入右括号时就判断是否相等,不相等则直接返回false。思路:往栈里面放元素,遇到相同的就弹出就好了。

2023-04-16 16:50:39 50

原创 day10—栈和队列

栈和队列

2023-04-14 18:59:05 135

原创 day9—KMP&字符串完结

字符串问题中,常用的有双指针法,需要理解快慢指针不同指向的含义,根据题目设定指针。比如字符串反转等问题。还有字符串查找问题中最重要的KMP算法,一刷简单了解,二刷再硬啃。

2023-04-13 19:14:13 85

原创 day8—字符串

字符串算法

2023-04-12 15:23:19 38

原创 day7—哈希完结

一般来说,哈希表用于查找某个元素是否存在于集合中。对于哈希表,要知道要知道哈希函数和哈希碰撞哈希函数是把传入的key映射到哈希表的索引上。哈希碰撞是多个key映射到了同一个索引。解决哈希碰撞一般两种方法:拉链法和线性探测法。数组SetMap哈希表结构主要用来做映射,并快速判断元素是否在集合中有相应的映射。

2023-04-11 19:19:17 38

原创 day6—哈希表

思路:本题需要存放sum,不断循环,判断新计算出的sum是否在集合中出现过,所以用哈希法。思路:我们得判断需要的数字(比如target=9,元素=2,需要的数字就是9-2=7)是否在集合中,所以使用哈希法。我们只需要初始化把这所学校里学生的名字都存在哈希表里,在查询的时候通过索引直接就可以知道这位同学在不在这所学校里了。我们将学生的名字通过哈希函数计算出哈希表中的索引下标,需要查找的时候直接通过索引下标查看是否有该学生名字即可。哈希表的key看作数组的索引下标,通过索引下标访问数组中的值。

2023-04-11 15:33:43 193

原创 day4—链表完结

链表的相关问题,通用的方法有虚拟头结点,可以很大程度方便了我们对于头结点的处理。双指针是必须掌握的,熟练用快慢指针,进行题目的拆解分析。递归也是常用的,相较于双指针比较难理解。还有链表的一些基本操作,核心要领:对于单链表而言,如果要添加或者删除某个结点,我们的指针一定要指向这个结点的前一个结点。

2023-04-08 16:47:46 111 1

原创 day3—链表基础

链表理论基础什么是链表,链表是一种通过指针串联在一起的线性结构,每一个结点由两部份组成,一部分是数据(存放当前数据),另一部份是指针(指向下一个结点),尾结点指向null。链表的入口节点称为链表的头结点也就是head。链表的类型单链表:每个结点只有一个指针指向下一个结点。双链表:每个结点有两个指针分别指向上一个和下一个结点。循环链表:链表首位相连链表的存储方式数组在内存中是连续分布的,但链表可不是连续分布的。链表是通过指针域的指针链接在内存中各个节点。所以链表在内存中是散乱分布的

2023-04-08 10:23:40 167 1

原创 day2—数组完结

两天的数组学习,了解了数组的一些特性和基本的一些解题方法。一般暴力法都是两层for循环根据题意解决。还有就是核心的双指针法,做到一层for循环完成两层for循环的事情。

2023-04-06 19:51:44 160 1

原创 day1—数组、二分查找

【代码】day1—数组、二分查找。

2023-04-05 10:51:28 347

空空如也

空空如也

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

TA关注的人

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