数据结构
文章平均质量分 88
关于数据结构一些内容
敷敷_
一位想成为优秀程序员的小小奋斗者
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【数据结构】(二叉树)计算结点|叶子结点|高度|第K层结点数
对于深度为K 的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对 应时称之为完全二叉树。也就是 说,如果一个二叉树的层数为K,且结点总数是 ,则它就是满二叉树。前序遍历是先访问根节点,再访问左子树,左子树根结点访问完后 才会访问左子树结点然后右子树结点;4. 若规定根节点的层数为1,具有n个结点的满二叉树的深度h = log2(n+1);2. 若规定根节点的层数为1,则深度为h的二叉树的最大结点数是 2^(h-1);左子树结点数+右子树结点数 + 根节点;原创 2023-12-17 17:45:01 · 3603 阅读 · 0 评论 -
【数据结构】(堆)Top-k|堆排序
n-1是最后结点下标值,(结点-1)/2 可以得到该结点的父结点,从父结点往下调整;假设给定一串数字,4,6,2,1,5,8,2,9;在排序的基础上,如果这个数很大呢,比如一百万个数,要找到前k个较大值;当插入一个新元素时,插入到堆尾,与父结点比较,相应的往上调整。可以假设法:假设较大(较小)的孩子为左孩子,然后验证假设;注意,构建堆的时候,size是最后一个元素的下一个;堆的逻辑结构是完全二叉树,物理结构是一维数组存储;因为堆分为两类,在数据插入时,需要选择适应的调整;父结点 = (孩子结点-1)/2;原创 2023-12-14 21:47:02 · 695 阅读 · 0 评论 -
【数据结构】面试OJ题—栈-队列-互相实现|循环队列|括号匹配
目录1. 有效的括号思路:2.用队列实现栈 思路:3.用栈实现队列思路: 4.设计循环队列思路:20. 有效的括号 - 力扣(LeetCode)2.用队列实现栈 225. 用队列实现栈 - 力扣(LeetCode) 3.用栈实现队列232. 用栈实现队列 - 力扣(LeetCode) 4.设计循环队列622. 设计循环队列 - 力扣(LeetCode)原创 2023-12-06 11:36:50 · 1172 阅读 · 0 评论 -
【数据结构】(栈|队列)基本功能
是。原创 2023-12-04 22:00:00 · 1500 阅读 · 0 评论 -
【数据结构】面试OJ题—链表
将没走完的链表直接尾插到新链表后即可;将小的结点尾插到新链表中。原创 2023-12-04 16:24:42 · 1300 阅读 · 1 评论 -
【数据结构】(双链表)增删查改
双链表的引入是因为单链表要访问某个结点的前驱结点时,只能从头开始遍历,访问后驱结点的复杂度为O(1),访问前驱结点的复杂度为O(n)。为了克服上述缺点,引入了双链表。双链表的引进,对于链表的操作有了极大的遍历;链表由单向的链变成了双向链。双向链表(double linked list)是在单链表的每个结点中再设置一个指向其前驱结点的指针域。原创 2023-11-20 15:07:26 · 1027 阅读 · 0 评论 -
【数据结构】面试OJ题—带环链表(数学推论)
1.如果N是偶数,第一轮内就会追上;2.如果N是奇数,C是奇数,第一轮会错过,下一轮会追击(C是奇数,C-1就会是偶数);只存在这两种//快慢指针在这种情况下,该情况其实还可以推论出另一个公式结论。这就是第二题。原创 2023-11-14 17:01:55 · 506 阅读 · 0 评论 -
【数据结构】(单链表)增删查改
因为顺序进行插入删除时,有时候需要移动大量数据,造成不便,影响了运行效率。这时候引出了它的黄金搭档单链表;通过一组任意的存储单元来存储线性表中的数据元素,不需要使用地址连续的存储单元,因此它不要求在逻辑上相邻的两个元素在物理位置上也相邻。一:单链表的特点单链表不要求逻辑上相邻的两个元素在物理位置上也相邻,因此不需要连续的存储空间。单链表是非随机的存储结构,即不能直接找到表中某个特定的结点。查找某个特定的结点时,需要从表头开始遍历,依次查找。优点:支持动态内存分配。原创 2023-11-13 18:47:45 · 655 阅读 · 0 评论 -
【数据结构】(顺序表)增删查改
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在⼀种或多种特定关系的数据元素的集合。数据结构反映数据的内部构成,即数据由那部分构成,以什么方式构成,以及数据元素之间呈现的结构。能够存储数据(如顺序表、链表等结构)存储的数据能够方便查找。原创 2023-11-06 19:59:33 · 693 阅读 · 1 评论 -
【数据结构】面试OJ题—时间复杂度2
定义两个变量,一个用来遍历数组查看是否有和val值相等的,一个用来记录下来不等于val值的,放入数组中;题目说了 数组1是可以包容数组2进去的,我们可以直接将数组2有效值放入数组1最后一个有效值后。我们可以发现时删除重复项,也就说第一个元素该值都是有效的,可以定义变量从1开始;然后定义遍历变量就行for循环,前后比较,将有效值放到有效位置中。,先将两个数组值合并在数组1中,再直接qsort排序即可啦。不要使用额外的数组空间,你必须仅使用。的元素,并返回移除后数组的新长度。我们换一种方式,不使用qsort,原创 2023-10-29 21:00:41 · 571 阅读 · 2 评论 -
【数据结构】面试OJ题—时间复杂度
如果其中一个操作数中的位为 0,而另一个操作数中的位为 1,则相应的结果位设 置为 1。相同为0,不同为1 a^a =0;异或运算的规则是:如果两个对应位的数相同,则该位结果为0;0 ^ 0 = 0,0 ^ 1 = 1,1 ^ 0 = 1,1 ^ 1 = 0,这是异或运算的基本规则。但是此题,又略有不同,因为该数组元素是整型,和上面left,right数值会引起冲突。这两组数组都异或一遍,因为异或的原理,只会剩下只出现一次的那个数字。1异或任何数等于该数的取反,即1 ^ x = ~x。原创 2023-10-22 20:25:57 · 596 阅读 · 2 评论
分享