
C++进阶
文章平均质量分 91
tpoog
本科在读,c++希望可以成为大佬
展开
-
哈希重要思想续——布隆过滤器
布隆过滤器是由布隆(Burton Howard Bloom)在1970年提出的 一种紧凑型的、比较巧妙的概率型数据结构,特点是高效地插入和查询,可以用来告诉你 “我们在使用新闻客户端看新闻时,它会给我们不停地推荐新的内容,它每次推荐时要去重,去掉那些已经看过的内容。给两个文件,分别有100亿个query,我们只有1G内存,如何找到两个文件交集?注意,布隆过滤器不好做删除操作,当删除一个数之后,别的数出现误判的可能性会增大。对于布隆过滤器中他的大小要设置成多少,这也是个数学问题,可以参考此文章。原创 2024-06-03 19:53:23 · 1072 阅读 · 4 评论 -
哈希重要思想——位图详解
所谓位图,就是用每一位来存放某种状态,适用于海量数据,数据无重复的场景。通常是用来判断某个数据存不存在的。为了方便理解我们引入一道面试题,给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。两个思路:1.排序+二分2.set+find首先40亿个整数占用多少内存?1G约等于10亿字节,40亿个整数有160亿字节,也就是大约16G左右,16G是绝对会内存超限的,所以正常的方法我们都不可以使用。原创 2024-05-13 17:52:20 · 1005 阅读 · 7 评论 -
哈希用法及其底层详解+实现
前面几章我们已经讲完了map和set的使用,及其底层,相信你已经会使用map和set了,今天我们学习hash,他可以说是map和set的亲兄弟。原创 2024-05-08 13:18:43 · 1015 阅读 · 5 评论 -
红黑树封装map和set(模拟实现)
这个就需要多写代码去理解,因为代码都普遍比价大一些。原创 2024-04-23 16:36:26 · 881 阅读 · 6 评论 -
手撕红黑树(map和set底层结构)(2)
总的来说红黑树的实现和AVL树非常像,他们就是兄弟,红黑树就是把考虑的因素从平衡因子转变成了颜色。原创 2024-04-23 11:04:36 · 659 阅读 · 2 评论 -
手撕AVL树(map和set底层结构)(1)
int _bf;, _bf(0), _kv(kv){}左旋:新节点插入了较高右子树的右侧右旋:新节点插入了较高左子树的左侧双旋:左+右:新节点插入了较高左子树的右侧右+左:新节点插入了较高右子树的左侧总之一句话:理解旋转我们一定要自己去画图,一定要自己动手,才会理解深刻。原创 2024-04-18 11:13:47 · 1899 阅读 · 5 评论 -
关联式容器——map和set详解
我们前几篇文章讲了搜索二叉树,我们提到了搜索二叉树的应用就是K结构和KV结构,今天我们要提到的这两个关联式容器就是这两个结构的实现,废话少说直接今日我们的内容。总的来说map和set就是我们已经学过的知识,知识换了包装而已,这里的重点就是要理解这个下标的原理,多通过代去深化自己的知识,下一节我们就要开始讲AVL树和红黑树了。原创 2024-04-09 16:25:55 · 1113 阅读 · 13 评论 -
二叉树进阶——二叉树OJ
为了巩固我们对于二叉树的理解本篇文章我们来练习一些二叉树的OJ题。原创 2024-04-08 18:14:00 · 1677 阅读 · 9 评论 -
二叉树进阶——手撕二叉搜索树
若它的左子树不为空,则左子树上的所有节点的值都小于根节点的值若它的右子树不为空,则右子树上的所有节点的值都大于根节点的值总的来说二叉搜索树,比较难的地方就是删除部分,多画图多思考。下篇我们就要深入二叉搜索树。原创 2024-04-06 17:35:34 · 877 阅读 · 10 评论