![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
绝活蛋炒饭
这个作者很懒,什么都没留下…
展开
-
二叉树的OJ题——6.前序遍历
此题要保存节点,所以需要先获取节点个数,然后进行前序遍历,保存每一个节点值。//节点个数 = 左右子树节点个数 + 1。原创 2023-12-26 18:02:53 · 395 阅读 · 0 评论 -
二叉树OJ题——9.另一棵树的子树
判断t是否为s的子树,需要判断t是否和s的某一个子树相同,所以此题就是判断两棵树是否相同的逻辑。原创 2023-12-26 18:01:14 · 368 阅读 · 0 评论 -
二叉树OJ题——5.对称二叉树
判断一个树是否对称,首先要判断左右孩子是否对称相等,还需要判断左孩子的左子树是否和右孩子的右子树对称,左孩子的右子树是否和右孩子的左子树对称。原创 2023-12-26 17:58:47 · 381 阅读 · 0 评论 -
二叉树OJ题——4.相同的树
首先比较根节点是否相同,然后分别比较左右子树是否相同。原创 2023-12-26 17:56:45 · 329 阅读 · 0 评论 -
二叉树OJ题——3.翻转二叉树
翻转每一棵树的左右子树根节点。原创 2023-12-26 17:54:11 · 330 阅读 · 0 评论 -
二叉树OJ题——2.二叉树最大深度
二叉树的最大深度等价于:左右子树的最大深度 + 1。原创 2023-12-26 17:50:23 · 331 阅读 · 0 评论 -
二叉树OJ题1--单值二叉树
遍历二叉树,并且每一个节点值都和根节点的值进行比对,如果不等于根节点的值,则不是单值树。原创 2023-12-26 17:48:42 · 377 阅读 · 0 评论 -
大小堆的实现
这段代码主要定义了一个堆的数据结构和相关操作。堆是一种特殊的树形数据结构,它满足堆的性质要求,通常被用于实现优先队列等数据结构。堆可以作为最大堆或最小堆来使用,这取决于如何对数据进行初始化。原创 2023-12-26 15:27:46 · 375 阅读 · 0 评论 -
栈和队列OJ题——15.循环队列
入队:首先要判断队列是否已满,再进行入队的操作,入队操作需要考虑索引循环的问题,当索引越界,需要让它变成最小值。出队:首先要判断队列是否为空,再进行出队操作,出队也需要考虑索引循环的问题。判满: 队尾 + 1 == 队头。通过一个定长数组实现循环队列。判空: 队头 == 队尾。原创 2023-12-03 23:10:12 · 308 阅读 · 1 评论 -
栈和队列的OJ题——14.用栈实现队列
出队操作: 当出队的栈不为空是,直接进行出栈操作,如果为空,需要把入队的栈元素全部导入到出队的栈,然后再进行出栈操作。此题可以用两个栈实现,一个栈进行入队操作,另一个栈进行出队操作。原创 2023-12-03 23:07:04 · 119 阅读 · 0 评论 -
栈和队列的OJ题--13.用队列实现栈
出栈操作相当于非空队列的队尾元素出队,此时需要把非空队列除最后一个元素之外的其余元素入队到空队列,然后出队最后一个队尾元素。解题思路: 此题可以用两个队列去实现一个栈,每次始终保持一个队列为空,入栈操作相当于给非空队列进行入队操作。原创 2023-12-03 23:03:39 · 114 阅读 · 0 评论 -
动态开辟空间的单链表式队列的实现
【代码】动态开辟空间的单链表式队列的实现。原创 2023-11-29 09:26:59 · 54 阅读 · 0 评论 -
动态开辟空间的数组栈的实现
【代码】动态开辟空间的数组栈的实现。原创 2023-11-23 23:42:20 · 554 阅读 · 0 评论 -
栈和队列的OJ题--12.括号匹配
2. 右括号,与栈顶的左括号进行匹配,如果不匹配直接返回false。循环结束后,如果栈空则匹配,否则左括号比右括号多肯定不匹配。1. 左括号,直接入栈。原创 2023-11-23 23:32:40 · 61 阅读 · 0 评论 -
单链表OJ题——11.随机链表的复制
2.复制随机指针的链接:拷贝节点的随机指针指向被拷贝节点随机指针的下一个位置。1.拷贝链表的每一个节点,拷贝的节点先链接到被拷贝节点的后面。3.拆解链表,把拷贝的链表从原链表中拆解出来。原创 2023-11-22 09:10:53 · 108 阅读 · 0 评论 -
单链表OJ题——10.环形链表2
所以从相遇点开始slow继续走,让一个指针从头开始走,相遇点即为入口节点。fast所走的步数为:L + X + N * C。slow所走的步数为:L + X。即: L = N * C - X。原创 2023-11-22 09:08:51 · 81 阅读 · 0 评论 -
单链表OJ题--9.环形链表
定义快慢指针fast,slow, 如果链表确实有环,fast指针一定会在环内追上slow指针。原创 2023-11-22 09:05:36 · 88 阅读 · 0 评论 -
单链表OJ--8.相交链表
此题可以先计算出两个链表的长度,让长的链表先走相差的长度,然后两个链表同时走,直到遇到相同的节点,即为第一个公共节点。原创 2023-11-22 09:03:18 · 74 阅读 · 0 评论 -
单链表OJ题--6.链表分割
创建两个链表,分别存放小于x的节点和大于等于x的节点,分别进行尾插。原创 2023-11-22 08:59:24 · 41 阅读 · 0 评论 -
单链表相关面试题--7.链表的回文结构
【代码】单链表相关面试题--7.链表的回文结构。原创 2023-11-20 17:16:04 · 482 阅读 · 0 评论 -
单链表相关面试题--5.合并有序链表
【代码】单链表相关面试题--5.将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。原创 2023-11-20 17:14:37 · 208 阅读 · 0 评论 -
单链表相关面试题--4.链表中倒数第k个结点
【代码】单链表相关面试题--4.输入一个链表,输出该链表中倒数第k个结点。原创 2023-11-20 17:11:49 · 68 阅读 · 0 评论 -
单链表相关面试题--3.链表的中间节点
【代码】单链表相关面试题--3.给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。原创 2023-11-20 17:10:08 · 102 阅读 · 0 评论 -
单链表相关面试题--2.反转一个单链表
【代码】单链表相关面试题--2.反转一个单链表。原创 2023-11-20 17:07:21 · 90 阅读 · 0 评论 -
单链表相关面试题--1.删除链表中等于给定值 val 的所有节点
【代码】单链表相关面试题--6.删除链表中等于给定值 val 的所有节点。原创 2023-11-20 17:04:40 · 75 阅读 · 0 评论 -
栈 和 队列
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。栈中的数据元素遵守后进先出LIFO)的原则。压栈:栈的插入操作叫做进栈压栈入栈,。出栈:栈的删除操作叫做出栈。。原创 2023-11-23 23:47:29 · 77 阅读 · 0 评论 -
二叉树与堆
目录1.树概念及结构1.1树的概念1.2 树的相关概念1.3 树的表示1.4 树在实际中的运用(表示文件系统的目录树结构)2.二叉树概念及结构2.1概念2.2现实中的二叉树:2.3 特殊的二叉树:2.4 二叉树的性质2.5 二叉树的存储结构3.二叉树的顺序结构及实现3.1 二叉树的顺序结构3.2 堆的概念及结构3.3 堆的实现3.2.1 堆向下调整算法3.2.2堆的创建3.2.3 建堆时间复杂度3.2.4 堆的插入3.2.5 堆的删除3.2.6 堆的代码实现3.4 堆的应用3.4.1 堆排序3.4.2 TO原创 2024-02-22 20:24:08 · 1042 阅读 · 1 评论 -
数组相关面试题--5.合并两个有序数组
2. 第一步结束后,nums2中可能会有数据没有搬移完,将nums2中剩余的元素逐个搬移到nums1。1. 从后往前遍历数组,将nums1和nums2中的元素逐个比较。将较大的元素往nums1末尾进行搬移。时间复杂度:O(m+n)空间复杂度: O(1)原创 2023-11-16 22:19:30 · 64 阅读 · 0 评论 -
数组相关面试题--1.旋转数组
3. 逆转子数组[k, size - 1]解题思路:使用三次逆转法,让数组旋转k次。2. 逆转子数组[0, k - 1]原创 2023-11-16 21:54:51 · 39 阅读 · 0 评论 -
数组相关面试题--2.消失的数字
1.第一个循环就是将nums每个元素,在arr数组中大小为i就将元素放在第i+1位上即arr[i];的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?2.第二个循环从0开始与arr数组中拍好顺序的元素比较,看缺少了哪一个;原创 2023-11-16 22:08:54 · 22 阅读 · 0 评论 -
数组相关面试题--4.删除排序数组中的重复项
2. 遍历数组,如果nums[i]与nums[count-1]不等,就将nums[i]搬移。到nums[count]位置,不同元素多了一个,给count++由于不同的元素需要往前搬移,那count-1就是前面不同元素。搬移之后,最后一个元素的位置,下一次在遇到不同元素就应该。1. 设置一个计数,记录从前往后遍历时遇到的不同元素的个数。3. 循环结束后,返回count。搬移到count位置。原创 2023-11-15 23:14:58 · 128 阅读 · 0 评论 -
没有头结点的单链表
这段代码定义了一个单链表及其相关操作,主要包括以下功能:1. 定义单链表的数据类型和结点结构;2. 动态申请内存创建链表结点;3. 实现单链表的插入、删除、查找等基本操作;4. 使用头插和尾插法动态调整链表;5. 打印单链表;6. 在指定位置之后插入元素;7. 删除指定位置之后的元素。通过这些操作,代码展示了如何使用单链表进行数据存储和操作。在实际应用中,可以根据需求进一步扩展和完善链表的操作功能原创 2023-11-15 23:11:53 · 156 阅读 · 0 评论 -
数组相关面试题--3.原地移除数组中所有的元素val
因为nums[i]元素之前出现过count个值等于val的元素,已经被删除了。a. 如果num[i]等于val,说明值为val的元素出现了一次,count++b. 如果nums[i]不等于元素,将nums[i]往前搬移count个位置。因为题目说了,数组中元素个数最大为100,所以不用动态申请,至二级创建100个元素数组即可。2. 遍历nums,将nums中所有与val不同的元素搬移到temp中。2. 遍历nums,将nums中所有与val不同的元素搬移到temp中。因此次数需要将nums[i]往前搬移。原创 2023-11-13 16:24:09 · 34 阅读 · 0 评论 -
顺序表的实现
这里是动态开辟的空间的顺序表的实现。本篇博客主要讲解可是结构体的定义以及各个函数的实现。原创 2023-11-09 15:39:26 · 24 阅读 · 0 评论 -
顺序表和链表
线性表是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串...线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。原创 2023-11-08 07:59:43 · 27 阅读 · 0 评论 -
算法的时间复杂度和空间复杂度
如何衡量一个算法的好坏呢?算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏,一般 是从时间和空间两个维度来衡量的,即时间复杂度和空间复杂度。原创 2023-10-09 09:41:32 · 25 阅读 · 0 评论