
数据结构与算法
文章平均质量分 70
爱敲代码的奇点
兴趣编程,热爱编程
展开
-
位图和布隆过滤器
给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中?可以用set或unordered_set吗?我们知道1G大概10亿字节,40亿个整数需要160亿字节,也就是16G,还没有加上其他的东西也要开空间,所以已经超过了内存的大小,就无法无法全部加载到内存。你们是不是想说我一部分一部分加载到内存就可以了,也是不好,太慢了有什么好的解决方案吗?我们可以用位图,位图就是用去这个数在不在,在就是1,不在就是0。用直接定值法去映射。原创 2024-05-24 15:48:02 · 863 阅读 · 0 评论 -
哈希表----开散列
/记录表中数据个数。原创 2024-05-20 09:54:17 · 261 阅读 · 0 评论 -
哈希表----闭散列
当我们用哈希函数的时候,其中一个就是取这个表的长度len,按照哈希函数:Hash(key) = key% len,将这个位置映射到表中通过上面的除留余数法,会有的问题,可以通过来解决也叫,通过线性探测,依次找后面的位置存储。原创 2024-05-19 21:41:16 · 545 阅读 · 0 评论 -
AVL树的旋转
每个节点子树高度差的绝对值不超过1(注意节点中如果没有平衡因子),节点的平衡因子是否计算正确。(或者反过来,我们用前面那种)平衡因子=[-1,1],当超出这个范围,搜索树就不平衡了。就是每个节点的左右子树的高度差不超过1,称平衡的搜索树为。是不是感觉这样就链接上了,其实不对的,每个节点的父亲也要更新的。和左单旋是类似的,读者可以模仿上面来分析,自己把它写出来。我们知道搜索二叉树有缺陷,就是不平衡,比如下面的树。更新节点指向是一定要更新他的父亲节点的指向。, 那我们怎么控制搜索树的平衡呢?原创 2024-05-11 08:47:51 · 452 阅读 · 0 评论 -
二叉搜索树的插入和删除
当root是空的时候怎么处理的?为什么用个引用就解决了呢?间接删除:找它的左子树的最大节点代替,也就是左子树的最右节点 或。上面情况可以解决,但是有些情况不能解决,比如。找它的右子树的最小节点代替,也就是右子树的最左节点。你以为第一种情况就解决了吗?如果是下面的情况呢?若它的左子树不为空,则左子树上所有节点的值。若它的右子树不为空,则右子树上所有节点的值。它的左右子树也分别为二叉搜索树。这个很简单,直接给你们看了。是不是发现崩了,为什么呢?原创 2024-05-03 20:23:44 · 411 阅读 · 0 评论 -
排序排序啦
【代码】排序排序啦。原创 2024-02-22 10:30:03 · 162 阅读 · 1 评论 -
二叉数之堆
对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。简单啦,利用堆的特点,假如找前k个最小的数,建小堆,取顶元素,再删顶元素,一直到最后就可以找出来。4. 若规定根节点的层数为1,具有n个结点的满二叉树的深度,h= log2(n+1).:若一个节点含有子节点,则这个节点称为其子节点的父节点;2. 若规定根节点的层数为1,则深度为h的二叉树的最大结点数是 2^h -1.:一个节点含有的子树的根节点称为该节点的子节点;原创 2024-01-26 17:57:30 · 870 阅读 · 1 评论 -
二叉树之链式结构
需要我前面的基础,要熟。原创 2024-01-25 17:46:59 · 361 阅读 · 1 评论 -
链表链表啦
链表是一种物理上不连续,逻辑上连续的存储结构,逻辑顺序是按指针来链接的。从图知道它们物理是不连续的,一下块一小块的空间都是在堆区随机开辟的,这些空间有可能连续,也有可能不连续,通过指针连在一起。原创 2024-01-19 21:16:34 · 970 阅读 · 0 评论