自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 《算法通关村第八关——二叉树经典算法》

LeetCode100:给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。输入:p = [1,2,3], q = [1,2,3]输出:true相同:两个节点相比较即可不同:有一方为空 或者 值不相同。

2023-12-01 14:29:29 373

原创 《算法通关村第七关——迭代实现二叉树的遍历》

这里的栈用于记录中间节点,每次向左寻找,边寻找边存储。

2023-11-23 14:14:49 46

原创 《算法通关村第六关——层次遍历》

对于层次遍历,我们可以用队列先进先出的特点,在出列的时候将左右子树放入队列中,这样出列的顺序就是树每一层的顺序。

2023-11-17 16:38:14 55

原创 《算法通关村第六关——如何使用中序和后序来恢复一颗二叉树》

前序:1 2 3 4 5 6 8 7 9 10 11 12 13 15 14中序:3 4 8 6 7 5 2 1 10 9 11 15 13 14 12前序遍历用来确定头节点,中序遍历用于在确定头节点之后分开左右子树。中序序列划分:前序序列划分为:前序:2 [3 4 5 6 8 7 ]中序:[3 4 8 6 7 5 ] 2以此类推。

2023-11-17 10:08:11 46

原创 《算法通关村第五关——队列的题目》

因为队列的特性是先进先出,与栈的特性相反,所以我们想要达成队列,需要将数据反过来添加进栈中,及第二个站用于存取第一个栈pop出的数据即可。当队列需要取值是,对第二栈进行获取。

2023-11-08 22:22:58 28

原创 《算法通关村第五关——实现队列》

队列的基本特征是:先进先出(FIFO)。对于链表来说很方便,使用尾插法的方式,即可。我们需要头指针用于遍历和删除,需要尾指针用于添加。

2023-11-08 22:20:07 31

原创 《算法通关村第四关——计算器问题解析》

注意:我们需要注意最后一个值的问题,如果遍历到了最后一个数据,则我们要直接进行运算而不是等到下一轮。为了防止出现只输入一个数字的情况,我们需要将。这题的大概思路为:通过遍历字符串,找到数字的前一个符号来判断其数字的动作,如果后面一位数字为+则压入栈中,如果为-则压入负,以此类推。LeetCode227.给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。整数除法仅保留整数部分。输入:s = “3+2*2” 输出:7。

2023-11-06 21:34:31 43

原创 《算法通关村第四关——最小栈》

对于栈来说,如果一个元素 a 在入栈时,栈里有其它的元素 b, c, d,那么无论这个栈在之后经历了什么操作,只要 a 在栈中,b, c, d 就一定在栈中,因为在 a 被弹出之前,b, c, d 不会被弹出。因此,在操作过程中的任意一个时刻,只要栈顶的元素是 a,那么我们就可以确定栈里面现在的元素一定是 a, b, c, d。LeetCode 155,设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。这题的关键在于MIn栈中,中间元素为什么是-2?

2023-11-06 21:00:10 19

原创 《算法通关村第四关——如何基于数组(或者链表)实现栈》

实现栈的存取。这里的top指针指向的是有元素的下一个元素。

2023-11-06 09:09:30 33

原创 《算法通关村第三关——条件筛选》

例如:输入如下所示的一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2,如果不存在则输出0。使用HashMap,key是元素的值,value是出现的次数,遍历两次,第一次将值放入Map中,第二次遍历Map获取是否存在大于数组一半长度的对象。但是,这种方式的空间复杂度为O(N)。根据数组特点,数组中有一个数字出现的次数超过数组长度的一半,也就是说它出现的次数比其他所有数字出现的次数之和还要多。

2023-10-30 10:58:34 34

原创 《算法通关村第三关——双指针的妙用》

看个例子,从下面序列中删除重复元素[1,2,2,2,3,3,3,5,5,7,8],重复元素只保留一个。我们可以在删除第一个2时将将其后面的元素整体向前移动一次,删除第二个2时再将其后的元素整体向前移动一次,处理后面的3和5都一样的情况,这就导致我们需要执行5次大量移动才能完成,效率太低。slow表示当前位置之前的元素都是不重复的,而fast则一直向后找,直到找到与slow位置不一样的 ,找到之后就将slow向后移动一个位置,并将arr[fast]复制给arr[slow],之后fast继续向后找,循环执行。

2023-10-28 13:39:51 26

原创 《算法通关村第三关——不简单的数组增删改查》

我们需要判断他是递增还是递减两种情况,只需要一次遍历就可以获取两种情况。将两个数组从后向前插入,比较大小,大的插入,最后比较是否还存在空余。LeetCode 896.判断一个给定的数组是否为单调数组。

2023-10-26 22:33:03 38

原创 《算法通关村第二关——k个一组反转》

LeetCode25.给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。输入:head = [1,2,3,4,5], k = 2 输出:[2,1,4,3,5]

2023-10-24 18:29:58 56

原创 《算法通关村第二关——反转链表》

LeetCode92 :给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right。请你反转从位置 left 到位置 right 的链表节点,返回反转后的链表。

2023-10-24 16:55:46 25

原创 《算法通关村第二关——链表经典问题之反转链表》

prev节点相当于记录当前节点的新下一个节点,就是当前节点的前一个节点,cur节点用于记录当前节点和next节点防止断链。带虚拟头结点的方式实现只需要创建一个额外节点用于存放头插法时的节点即可。不带头结点相当于进行链表相反操作,需要创建两个节点prev、cur。

2023-10-24 09:45:18 25

原创 《算法通关村第一关——环》

链表中会出现环,环是指 next节点指向了之前出现过的某个节点。最简单的方式就是遍历元素的时候将元素都放入HashMap中,如果HashMap中出现了重复数据,就说明出现了环。

2023-10-20 20:15:04 63

原创 《算法通关村第一关——链表经典算法题》

《算法通关村第二关——链表经典算法题》

2023-10-20 18:21:16 74

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

链表是一个一个相同节点的 数据元素 组成的一个对象。对象与对象之间是如何进行联系的?每一个Object对象有一个 ‘自己‘,用于记录下一个链接的对象。

2023-10-20 15:33:56 79

空空如也

空空如也

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

TA关注的人

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