- 博客(25)
- 收藏
- 关注
原创 《算法通关村——最长连续递增序列》
对于这种序列的问题,解题思路是一个方面,但是我觉得对于序列的边界也是也是一个容易掉进坑里的地方,如果觉得比较抽象的话可以构造几个例子来画一下,把边界值带入进去就比较容易得出结果。
2023-12-13 23:59:45
368
原创 《算法通关村——二进制求和》
其实关于字符串形式的加法,或者是链表还有其他的形式,其实都大差不差,就是求每一位加上进位之后的数,然后再求进位的数。最后判断是不是需要扩容。
2023-12-11 14:11:28
402
原创 《算法通过村——递归乘法》
本题需要一点技巧性,要了解位运算的基本操作,我们还可以进一步优化一下代码,就是把两个乘数当中小的数拿来分成2的乘方之和,可以减少一些运算。
2023-12-02 22:51:43
367
原创 《算法通关村—透彻理解二分查找》
你觉得可以得到90分,很可惜是0分,因为当你测试的时候,可能会出现死循环,例如原始序列是1到8,搜索3的时候就死循环了,为什么呢?这是因为移位的运算符>>优先级比加减要低,所以上面的代码等价结构是这样的:(left+(right - left))>>1很明显这不是我们预期的。在具体操作的时候可能有多种方式的,包括循环体中的 right = mid -1;和left = mid + 1也有多种方式的,这需要与if后面的条件配合,我们不要给自己添麻烦,在理解的基础上熟记这种方式就行了。
2023-11-19 22:01:00
26
原创 《算法通关村—轻松搞定二叉树的最小深度》
对于此题,使用深度遍历的时候需要注意,并不是为空遍历过后才是最短的,叶子结点是当前结点的左结点和右节点都为null才行。层序遍历相对比较容易写出代码。
2023-11-16 21:31:09
38
1
原创 《算法通关村—轻松搞定合并二叉树》
本题涉及到递归和双指针的应用,难度不是很大,需要注意当把root2的结点接入到root1的时候,要注意不能重复接入。还有几个类似的题可以看看。leetcode 100 相同的树leetcode 617 合并二叉树。
2023-11-13 20:22:29
19
原创 《算法通关村—迭代实现二叉树的前序遍历》
本题运用到栈实现二叉树遍历,可以让我们更加理解二叉树的遍历顺序。对于二叉树迭代遍历,前序与后序相对比较简单,可以试一试二叉树的后序迭代遍历。
2023-11-11 22:10:22
57
1
原创 《算法通关村—层次遍历原来如此简单》
二叉树的层序遍历主要就是队列的运用,还有几道题也是对本题的扩展,做了这几道题对于二叉树的层序遍历相关的题应该就没什么问题了。leetcode 107 二叉树的层序遍历Ⅱleetcode 103 二叉树的锯齿层序遍历leetcode 429 N叉树的层序遍历。
2023-11-08 22:34:18
45
1
原创 《算法通关村—哈希问题解析》
哈希(hash)也称为散列,哈希运算,把任意值输入通过散列算法就可以获得固定长度,这个输出值就是散列值。散列值的长度远小于输出的值。哈希就是一种算法,把一种输入的结果进行算法变成另一串随机数列。例如如果我们输入相同的数,例如其结果也是相同的。不管你的输入有多大,最后的结果也都是一串数列,但是我们不能通过散列值推导出原始数据,也就是说hash运算是不可逆的。
2023-11-03 23:37:59
44
原创 《算法通关村—如何基于链表实现栈》
栈是一种先进后出,后进先出的数据结构,访问栈的数据只能通过出栈的方式或者通过获取栈顶元素的方式来访问。既然我们不能像链表那样一个一个访问结构中的元素,但是我们可以通过链表这种结构来实现栈。我们用list_stack表示栈,可以在类的成员里面添加成员变量head,用来表示链表的头结点,由于链表是后进先出的,还需要一个变量记录头结点到尾结点的距离,用于记录出栈的位置。list_stack的头文件,list_stack.h,定义了我们需要用到的成员变量和成员函数。
2023-11-01 18:51:29
48
1
原创 《算法通关村第三关青铜挑战——不简单的数组增删改查》
往数组的指定位置中添加元素,首先得考虑下标的问题,在这里,初学者先不要考虑数组装不下而扩容的问题,假设位置都是够的。就比如你在操场上排队,本来你们这一列的同学都站得好好的,突然其他的列的同学有搞小动作,讲话的,为了不让他们在一起讲话,于是老师就安排讲话的同学插入到你们这一列的某个位置,这时,对于他插入位置的前面的同学是不是不用动?最后再把你要加入的元素赋值给目标位置就行了。对于删除元素,想想上面的例子,如果把那个同学插入过来后还是不听话,班主任就把他移到边上,然后,就是他后面的同学往前补。
2023-10-28 22:32:22
53
1
原创 算法通关村第二关-翻转k个一组链表
此题虽为困难题,但是主要思路还算是比较清晰,最重要的是注意细节,注意每个组之间的连接节点的关系,以及遍历的次数也是比较讲究,总之此题可以让我们对链表的遍历细节有更深刻的理解。
2023-10-25 23:47:55
50
1
原创 算法通关村第二天——反转链表二
虽然只相对于普通的反转链表只加了一个区间,但是也复杂了不少,尤其是reverstart节点那里需要注意判断,如果是第一个节点,那么最后返回的节点就不是head,应该是在链表区间反转前的第一个。
2023-10-23 22:50:01
21
原创 算法通关村第二天——链表反转
由于链表是一中改变结点指向操作简单的一种数据结构,只需要改变链表的next指针域的指向即可,所以我们需要一个遍历的节点node,node=head,一个前置节点pnode,和一个记录node的下一个节点nextnode。遍历node,我们先要获得node的下一个节点为nextnode,然后再把node的指针域指向pnode,然后再把node的值赋予pnode,再把nextnode的值赋给node,这样一次反转就好了。本题出自leetcode206反转链表,给出一个链表,要求把链表反转,例如。
2023-10-22 23:51:18
52
1
原创 算法通关村第一关黄金——链表中环的问题
利用双指针,一个慢指针每次走一步,快指针每次走两步,如果存在环,就会在某一个地方相遇,就像是在操场上跑步的两人,一个快一个慢就会在某个地方相遇。那么,相遇的点跟环的交点有什么关系?在两指针第一处相遇点,让快指针指向头结点,然后慢指针继续一步一步移动,快指针也一步一步移动,就可以在第一个交界点相遇。本题出自leetcode 142 环形链表,相比于环形链表Ⅰ,此次需要额外求出环形链表中环的第一个交界点。
2023-10-22 23:18:55
58
1
原创 算法村通关村第一关求出链表的回文序列
代码实现下来,还是比较轻松的,还是要注意一些问题,比如链表长度为奇数的时候,快指针遍历完慢指针是在中间那一个位置还是在中间那一个位置后面的一个,遍历快指针的时候,快指针需要移动两次,如果第一次移动后为空了,再移动是不是就空指针错误了?。虽然是道easy题,但对于新手扣友来说还是挺不错的。
2023-10-21 21:30:09
34
原创 算法村通关村第一关——链表青铜挑战笔记
链表是一种连续性的存储数据的结构,如果需要频繁用到插入,删除元素比较于数组比较方便。一个完整的链表包含了许多的节点,每个节点都含有一个数据域,一个指向下一个节点的next指针。首先定义头文件Linklist.h。int val;//初始化链表//遍历链表//往链表插入元素//删除链表中的元素。
2023-10-19 23:32:29
95
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人