![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 82
兰亭落雪
目的不能抵达怎么付出都是偏差。
展开
-
布隆过滤器的原理,使用场景和注意事项
什么是布隆过滤器本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地插入和查询,可以用来告诉你“某样东西一定不存在或者可能存在”。相比于传统的 List、Set、Map 等数据结构,它更高效、占用空间更少,但是缺点是其返回的结果是概率性的,而不是确切的。实现原理HashMap 的问题讲述布隆过滤器的...原创 2019-03-14 10:36:30 · 400 阅读 · 0 评论 -
vector深度剖析
这样对于vector来说,就会出现一个问题,我在初始定义vector的时候该给其申请多少内存空间?如果申请的很小,那么我来了新的数据改存放在哪里?如果申请的很大,我用不完,那岂不是很浪费内存空间?原创 2019-05-28 12:37:03 · 1160 阅读 · 0 评论 -
数据结构中常见的树
BST树即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;如:BST树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;...原创 2019-03-17 20:06:04 · 141 阅读 · 0 评论 -
B树,B+树,红黑树应用场景笔记
一、B树的应用1、B树大量应用在数据库和文件系统当中。它的设计思想是,将相关数据尽量集中在一起,以便一次读取多个数据,减少硬盘操作次数。B树算法减少定位记录时所经历的中间过程,从而加快存取速度。假定一个节点可以容纳100个值,那么3层的B树可以容纳100万个数据,如果换成二叉查找树,则需要20层!假定操作系统一次读取一个节点,并且根节点保留在内存中,那么B树在100万个数据中查找目标值...原创 2019-03-17 20:05:37 · 264 阅读 · 0 评论 -
C++ 敏感词屏蔽
首先要解决的问题是敏感词的存储形式,这就涉及数据结构,先想想搜索屏蔽要怎么处理,比如我有一个content,我就遍历它每个字符,先看与词典中所有词第一个字符相同的,再看第二个,再看第三个.等等。那么,很明显,这就需要一种以层来存储的数据结构--树来存储敏感词汇。我首先设计了一个Node,它要存储同一级的node指针,下一级的node指针,标识词的结束,数据。最开始本来只想到用树的结构,最后发现, ...原创 2019-03-17 20:00:42 · 357 阅读 · 0 评论 -
Trie树
Trie树的名字有很多,比如字典树,前缀树等等。一:概念 下面我们有and,as,at,cn,com这些关键词,那么如何构建trie树呢?从上面的图中,我们或多或少的可以发现一些好玩的特性。 第一:根节点不包含字符,除根节点外的每一个子节点都包含一个字符。 第二:从根节点到某一节点,路径上经过的字符连接起来,就是该节点对应的字符串。 ...原创 2019-03-17 20:00:28 · 169 阅读 · 0 评论 -
Hash算法总结
1. Hash是什么,它的作用先举个例子。我们每个活在世上的人,为了能够参与各种社会活动,都需要一个用于识别自己的标志。也许你觉得名字或是身份证就足以代表你这个人,但是这种代表性非常脆弱,因为重名的人很多,身份证也可以伪造。最可靠的办法是把一个人的所有基因序列记录下来用来代表这个人,但显然,这样做并不实际。而指纹看上去是一种不错的选择,虽然一些专业组织仍然可以模拟某个人的指纹,但这种代价实在太...原创 2019-03-17 19:56:28 · 856 阅读 · 0 评论 -
C++-map 以及mulitmap的函数的应用
一、定义 (1) map<string,int> Map; (2) 或者是:typedef map<string,int> Mymap; Mymap Map;二、插入数据插入数据之前先说一下pair 和 make_pair 的用法pair是一个结构体,有first...原创 2019-03-17 19:55:31 · 818 阅读 · 0 评论 -
数据结构-哈希表
一.初识哈希表哈希表就是一种以 键-值(key-indexed) 存储数据的结构,我们只要输入待查找的值即key,即可查找到其对应的值。哈希的思路很简单,如果所有的键都是整数,那么就可以使用一个简单的无序数组来实现:将键作为索引,值即为其对应的值,这样就可以快速访问任意键的值。这是对于简单的键的情况,我们将其扩展到可以处理更加复杂的类型的键。使用哈希查找有两个步骤:使用哈希函数将被...原创 2019-03-17 19:54:02 · 374 阅读 · 0 评论 -
list使用说明
STL: C++ standard template library C++标准模板库STL之三:deque用法详解http://blog.csdn.net/longshengguoji/article/details/8519812C++三种容器:list、vector和deque的区别http://blog.csdn.net/gogokongyin/article/details/...原创 2019-03-17 19:43:42 · 207 阅读 · 0 评论 -
c++队列及优先队列
队列特点:先进先出,可形成有序的结构,运用于算法设计;常用操作:Cpp:queue<int> q; //定义;q.empty(); //如果队列为空返回true,否则返回false q.size(); //返回队列中元素的个数 q.pop(); //删除队列首元素但...原创 2019-03-17 19:32:19 · 448 阅读 · 0 评论 -
字典树查询时间复杂度
一 概述又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。二 优点利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希表高。三 性质(1)根节点不包含字符,除根节点外每一个节点都只包含一个字符;(2)从根节点到某一节点,路径上经...原创 2019-03-17 19:01:07 · 6062 阅读 · 0 评论 -
利用利用字典树(前缀树)过滤敏感词
字典树介绍Paste_Image.png又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。特性根节点不包含字符,除根节点外每一个节点都只包含一个字符 从根节点到某...原创 2018-12-04 20:17:06 · 1317 阅读 · 0 评论 -
剪枝
一、剪枝的由来常用的搜索有Dfs和Bfs。Bfs的剪枝通常就是判重,因为一般Bfs寻找的是步数最少,重复的话必定不会在之前的情况前产生最优解。深搜,它的进程近似一颗树(通常叫Dfs树)。而剪枝就是一种生动的比喻:把不会产生答案的,或不必要的枝条“剪掉”。剪枝的关键就在于剪枝的判断:什么枝该剪,什么枝不该剪,在什么地方减。二、剪枝的原则正确性,准确性,高效性。常用的剪...原创 2019-02-11 19:37:01 · 290 阅读 · 0 评论 -
广搜与深搜
一、深搜属于图算法的一种,英文缩写为DFS即Depth First Search.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次;深度优先遍历图的思想是,从图中某顶点v出发:(1)访问顶点v;(2)依次从v的未被访问的邻接点出发,对图进行深度优先遍历;直至图中和v有路径相通的顶点都被访问;(3)若此时图中尚有顶点未被访问,则从一个未被访问的顶点出...原创 2019-05-28 16:42:22 · 900 阅读 · 0 评论