数据结构
文章平均质量分 90
WH牛
加油!加油!加油!希望可以变得独当一面。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ArrayList 扩容机制及底层代码
意思非常简单就是 initialCapacity>0,就按initialCapacity的大小创建集合,initialCapacity==0,就按10的大小创建集合,initialCapacity<0就报错。意思是 elementData数组此时的容量小于添加元素后起码要有的最小容量,此时就要执行grow(minCapacity) 方法进行扩容。意思是如果 elementData是空的数组,就让DEFAULT_CAPACITY和minCapacity比大小。以上为我个人的小分享,如有问题,欢迎讨论!原创 2024-12-09 21:05:01 · 1295 阅读 · 0 评论 -
Trie树(字典树)
Trie树,又称字典树,是用来高效存储和查找字符串集合的一种数据结构查找时,可以高效的查找某个字符串是否 在Trie树中出现过,并且可以查找出现了多少次利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。1.2主要性质1.根节点不包含字符,除根节点外的每一个子节点都包含一个字符。2.从根节点到某一个节点,路径上经过的字符连接起来,为该节点对应的字符串。3.每个节点的所有子节点包含的字符互不相同。原创 2024-08-25 23:25:41 · 1105 阅读 · 0 评论 -
【数据结构练习】树和二叉树的选择题精选集锦
编程想要学的好,刷题少不了,我们不仅要多刷题,还要刷好题!为此我开启了一个弯道超车必做好题锦集的系列,此为树和二叉树的选择题精选集锦。该系列会不定期更新,敬请期待!1.已知某二叉树的中序遍历序列为JGDHKBAELIMCF,后序遍历序列为JGKHDBLMIEFCA,则其前序遍历序列为( )答案:B解析:由后序遍历确定子树的根,后序遍历从后向前看,最后一个元素为根,和前序遍历刚好相反,从后向前看后序遍历,应该是根,右,左,根据中序遍历确定子树的左右区间故:根为: A。原创 2023-10-26 19:52:03 · 1904 阅读 · 3 评论 -
优先级队列的模拟实现
但有些情况下,在这种情况下,。这种数据结构就是如果有一个关键码的集合K = {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储 在一个一维数组中,并满足:Ki = K2i+2) i = 0,1,2…,则称为 小堆(或大堆)。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。原创 2023-10-03 10:37:57 · 257 阅读 · 4 评论 -
【数据结构练习】二叉树相关oj题集锦三
编程想要学的好,刷题少不了,我们不仅要多刷题,还要刷好题!为此我开启了一个弯道超车必做好题锦集的系列,此为二叉树面试题第三篇,每篇大约5题左右。该系列会不定期更新,敬请期待!原创 2023-10-10 10:17:35 · 412 阅读 · 15 评论 -
队列(Queue)的顶级理解
(2)若不为null,队首向后走一步 front = (front+1)%elem.length;(3)队尾向后走一步rear=(rear+1)%elem.length,返回true;(2)不为空,如果为队尾下标为0,返回下elem[elem.length-1]的值。(3)若不为null,则 last.next=node, last=node;在实际工程中,使用Deque接口是比较多的,栈和队列均可以使用该接口。(3)下标不为0,返回数组下标为rear-1的值。以上为我个人的小分享,如有问题,欢迎讨论!原创 2023-09-10 18:14:33 · 1487 阅读 · 4 评论 -
七大排序的顶级理解(近万字详解)
1.直接选择排序思考非常好理解,但是效率不是很好。实际中很少使用2.时间复杂度:O(N^2)3.空间复杂度:O(1)4.稳定性:不稳定扩展:双向选择排序思路及过程:原创 2023-10-17 16:53:43 · 264 阅读 · 3 评论 -
【数据结构练习】链表面试题集锦二
数据结构想要学的好,刷题少不了,我们不仅要多刷题,还要刷好题!为此我开启了一个必做好题锦集的系列,每篇大约5题左右。此为第二篇选择题篇,该系列会不定期更新敬请期待!原创 2023-09-21 23:14:04 · 406 阅读 · 8 评论 -
树型结构和二叉树的概念及特性
目录1. 树型结构1.1 树的概念 1.2重要专有名词概念1.3 树的表示形式 1.4 树的应用编辑 2. 二叉树2.1 概念2.2 两种特殊的二叉树 2.3 二叉树的性质3.有关二叉树性质的练习题重要的总结与整理:重要概念以下概念只需了解文件系统管理(目录和文件) 4.具有n个结点的完全二叉树的深度k为: 答案:A解析:2n = n0+ n0 -1 +1;解得:n0 = n;以上为我个人的小分享,如有问题,欢迎讨论!!! 都看到这了,不如关注一下,给个免费的赞原创 2023-09-12 11:58:52 · 1474 阅读 · 5 评论 -
二叉树的存储
创建如下(图1)二叉树。在遍历二叉树时,如果没有进行某种约定,每个人都按照自己的方式遍历,得出的结果就比较混乱,二叉树的链式存储是通过一个一个的节点引用起来的,常见的表示方式有二叉和三叉表示方式。先获取左节点个数,再获取右节点个数,然后返回两者相加再加上根节点的个数1。叶子节点的个数=左树叶子节点的个数+右树叶子节点的个数。左孩子的引用,常常代表左孩子为根的整棵左子树。右孩子的引用,常常代表右孩子为根的整棵右子树。左孩子的引用,常常代表左孩子为根的整棵左子树。右孩子的引用,常常代表右孩子为根的整棵右子树。原创 2023-09-26 10:19:38 · 398 阅读 · 4 评论 -
【数据结构练习】二叉树相关oj题集锦二
编程想要学的好,刷题少不了,我们不仅要多刷题,还要刷好题!为此我开启了一个弯道超车必做好题锦集的系列,此为二叉树面试题第二篇,每篇大约5题左右。该系列会不定期更新,敬请期待!原创 2023-09-30 21:10:36 · 407 阅读 · 2 评论 -
二叉搜索树的详解及Map和Set的介绍
个结点的二叉搜索树,若每个元素查找的概率相等,则二叉搜索树平均查找长度是结点在二叉搜索树的深度 的函数,即结点越深,则比较次数越多。// GetOrDefault(): 如果key存在,返回与key所对应的value,如果key不存在,返回一个默认值。找到相应节点后与待删除的cur节点的值进行替换,最后删除target结点即可。二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树。不能修改,如果要修改,先将原来的删除掉,然后再重新插入。以上为我个人的小分享,如有问题,欢迎讨论!原创 2023-10-19 23:09:00 · 848 阅读 · 2 评论 -
【数据结构练习】栈的面试题集锦
数据结构想要学的好,刷题少不了,我们不仅要多刷题,还要刷好题!为此我开启了一个必做好题锦集的系列,此为第一篇选择题篇,该系列会不定期更新敬请期待!栈(Stack)的详解_WHabcwu的博客-CSDN博客。原创 2023-09-05 09:47:58 · 1494 阅读 · 3 评论 -
时间复杂度课后习题
用 size 表示数组的长度,我们遍历原数组,将原数组下标为 i 的元素放至新数组下标为 (i+k)%size 的位置,最后将新数组拷贝至原数组即可。此题目中,数组元素有序,所以a,b两个数可以分别从开始和结尾处开始搜,根据首尾元素的和是否大于sum,决定搜索的移动,整个数组被搜索一遍,就可以得到结果,所以最好时间复杂度为n。空间总的个数为:1+2+3+...+N-1 + N + N = (1+N)*N/2 + N = N^2/2 + 3N/2。以上为我个人的小分享,如有问题,欢迎讨论!原创 2023-09-15 16:09:14 · 359 阅读 · 5 评论 -
PriorityQueue的详解
问题,能想到的最简单直接的方式就是排序,但是:如果数据量非常大,排序就不太可取了。故创建PriorityQueue()时数组的默认容量是11;// 用ArrayList对象来构造一个优先级队列的对象。以上为我个人的小分享,如有问题,欢迎讨论!---即每次获取到的元素都是最小的元素,个元素依次与堆顶元素比完之后,堆中剩余的。都看到这了,不如关注一下,给个免费的赞。,因为Student的比较对象不明确。(1)offer底层代码展示。两种类型的优先级队列,个最小或者最大的元素。(1)使用时必须导入。原创 2023-10-13 16:58:52 · 304 阅读 · 3 评论 -
栈(Stack)的详解
进行数据插入和删除操作的一端称为栈 顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO。(1)首先对现有栈进行判断是否为满,若满则需要进行扩容。(1)首先得判断栈是否为空,若为空我们需要抛出异常。以上为我个人的小分享,如有问题,欢迎讨论!都看到这了,不如关注一下,给个免费的赞。(3)出栈:栈的删除操作叫做出栈。类似,都是动态的顺序表,不同的是。(2)压栈:栈的插入操作叫做进栈。:一种特殊的线性表,其。获取栈中有效元素个数。原创 2023-09-04 20:37:09 · 313 阅读 · 3 评论 -
【数据结构面试题】栈与队列的相互实现
出栈时,检查stack2是否为null,若为null,则直接将stack1的元素出栈后入到stack2里。(2)只要不是(1)则先检查qu1,再先检查qu2,将不为空的队列出size-1个元素到另一个队列里。(1)我们对两个队列进行检查,那个队列不为空,我们就把元素放在那个队里。只要stack1与stack2都为null时,队列就为空。(1)我们对两个队列进行检查,若都为空,返回-1。以上为我个人的小分享,如有问题,欢迎讨论!(2)若元素都为空,则我们把元素放在qu1里。方法:我们用两个队列来实现栈。原创 2023-09-11 22:43:56 · 495 阅读 · 4 评论 -
【数据结构练习】二叉树相关oj题集锦一
编程想要学的好,刷题少不了,我们不仅要多刷题,还要刷好题!为此我开启了一个弯道超车必做好题锦集的系列,此为二叉树面试题第一篇,每篇大约5题左右。该系列会不定期更新,敬请期待!原创 2023-09-27 16:16:32 · 305 阅读 · 6 评论 -
链表的顶级理解
将第一个节点的地址赋给我们新添加的节点的next,并且将新添加的节点赋给head,作为新的头节点。首先对该链表进行遍历,当遍历到最后一个节点时,将新添加的节点的地址最后一个节点的next。需要插入的位置必须为合法,如果不合法,我们会抛出一个异常进行提醒。任意位置插入,我们可以分为种情况,插在开头,插在结尾,插在中间。以上为我个人的小分享,如有问题,欢迎讨论!如果该链表为空,直接将该新增节点设为头节点。都看到这了,不如关注一下,给个免费的赞。进行遍历,并进行记录,最后进行返回就行。(3)没有你要删除的数据。原创 2023-08-22 10:05:42 · 1216 阅读 · 7 评论 -
LinkedList的顶级理解
LinkedList的底层是双向链表结构,元素存储在单独的节点中,通过引用将节点连接起来了。如果对双向链表或链表不太清晰,可以先看看本博主写的有关链表的文章。链表的顶级理解_WHabcwu的博客-CSDN博客在集合框架中,LinkedList也实现了List接口,具体如下:注意:实现了List接口的底层使用了双向链表没有实现接口,因此LinkedList不支持随机访问的任意位置插入和删除元素时效率比较高,时间复杂度为O(1)比较适合任意位置插入的场景LinkedList的结构。原创 2023-08-24 12:16:23 · 1627 阅读 · 3 评论 -
简单的洗牌算法
洗牌算法为ArrayList具体使用的典例,可以很好的让我们快速熟系ArrayList的用法。如果你对ArrayList还不太了解除,推荐先看本博主的ArrayList的详解。ArrayList的详解_WHabcwu的博客-CSDN博客。原创 2023-08-18 11:05:09 · 4931 阅读 · 13 评论 -
【数据结构练习】链表面试题集锦一
数据结构想要学的好,刷题少不了,我们不仅要多刷题,还要刷好题!为此我开启了一个必做好题锦集的系列,每篇大约5题左右。此为第一篇选择题篇,该系列会不定期更新敬请期待!1. 删除链表中。原创 2023-08-22 19:17:02 · 1542 阅读 · 10 评论 -
ArrayList的详解
在集合框架中,ArrayList是一个普通的类,实现了List接口,具体框架图如下:原创 2023-08-16 18:39:11 · 386 阅读 · 8 评论 -
时间复杂度与空间复杂度的详解
对于不能直接看出的并较复杂的问题,可以采用数学归纳法,但对于递归我们有专门总结的方法。实际中我们计算时间复杂度时,我们其实并不一定要计算精确的执行次数,而只需要。对于不能直接看出的并较复杂的问题,可以采用数学归纳法(不展开)的空 间,因为这个也没太大意义,所以空间复杂度算的是变量的个数。以上为我个人的小分享,如有问题,欢迎讨论!、在修改后的运行次数函数中,只保留最高阶项。在修改后的运行次数函数中,只保留最高阶项。都看到这了,不如关注一下,给个免费的赞。使用了常数个额外空间,所以空间复杂度为。原创 2023-08-10 18:14:19 · 392 阅读 · 7 评论
分享