![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
hellozhxy
这个作者很懒,什么都没留下…
展开
-
KMP 算法
作者:阮行止链接:https://www.zhihu.com/question/21923021/answer/1032665486来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。KMP算法是一种字符串匹配算法,可以在 O(n+m) 的时间复杂度内实现两个字符串的匹配。本文将引导您学习KMP算法,阅读大约需要30分钟。字符串匹配问题 所谓...原创 2020-03-09 16:40:52 · 343 阅读 · 0 评论 -
图解“红黑树”原理,一看就明白!
学过数据结构都知道二叉树的概念,而又有多种比较常见的二叉树类型,比如完全二叉树、满二叉树、二叉搜索树、均衡二叉树、完美二叉树等。作者:梁洪来源:51CTO技术栈|2019-08-22 09:22图片来自 Pexels今天我们要说的红黑树就是就是一棵非严格均衡的二叉树,均衡二叉树又是在二叉搜索树的基础上增加了自动维持平衡的性质,插入、搜索、删除的效率都比较高。红黑树也是实现 ...转载 2019-08-23 14:47:06 · 681 阅读 · 0 评论 -
Top-K问题与多路归并排序
Pro1:寻找前K大数方法1:K小根堆后面的值若大于当前根,则替换之,并调整堆大部分人都推荐的做法是用堆,小根堆。下面具体解释下:如果K = 1,那么什么都不需要做,直接遍历一遍,时间复杂度O(N)。下面讨论K 比较大的情况,比如1万。建立一个小根堆,则根是当前最小的第K个数。然后读入N-K个数,每次读入一个数就与当前的根进行比较,如果大于当前根,则替换之,并调整堆。如果小...转载 2019-06-11 18:30:54 · 971 阅读 · 0 评论 -
红黑树、B(+)树、跳表、AVL对比
在网上学习了一些材料。这一篇:https://www.zhihu.com/question/30527705AVL树:最早的平衡二叉树之一。应用相对其他数据结构比较少。windows对进程地址空间的管理用到了AVL树红黑树:平衡二叉树,广泛用在C++的STL中。map和set都是用红黑树实现的。我们熟悉的STL的map容器底层是RBtree,当然指的不是unordered_map...转载 2019-06-19 20:42:56 · 10158 阅读 · 2 评论 -
深夜学算法之SkipList:让链表飞
1. 前言上次写Python操作LevelDB时提到过,有机会要实现下SkipList。摘录下wiki介绍:跳跃列表是一种随机化数据结构,基于并联的链表,其效率可比拟二叉查找树。我们知道对于有序链表,查找的时间复杂度为O(n),尽管真正的插入与删除操作节点复杂度只有O(1),但都需要先查找到节点的位置,可以说是查找拉低了有序链表的性能。简单地讲,SkipList采用“空间换时间...转载 2019-06-19 20:32:00 · 146 阅读 · 0 评论 -
关于算法
1.算法,不止于刷题提到算法,不管是科班出身还是半路出家的程序员可能都会说上几句,算法谁没学过谁不知道啊?对于走工业界路线而非学术路线的同学来说,算法学习的最大作用也许是找工作…… 毕竟工作后,绝大多数时候都用各种成熟的类库,少有自己实现高级数据结构和算法的时候。但刚结束一学期修的算法课,上得我还真跟没学过算法似的,让我大开眼界,虽然每次课上我都听的不是很懂,但每节都期盼着老师又能带来什么新奇的...转载 2019-06-05 20:54:06 · 246 阅读 · 0 评论 -
算法和编程面试题精选 TOP50!(附代码+解题思路+答案)
本篇文章的面试资源,主要包含五部分内容:数组、链表、字符串、二叉树和重要算法(如排序算法)的编程面试题,其中每部分内容,都列出了一些最常被问到的热门问题。并且在每个题目后,给出了可以参考的解决思路和代码。因为题目较多,我们没有罗列所有的方法和代码,只给出了访问地址。相信大家在掌握了这些内容后,一定可以提升实力、信心大增。作者 | javinpaul出品 | AI科技大本营 数组...转载 2018-10-23 14:01:55 · 386 阅读 · 0 评论 -
最短路径问题:Dijkstra算法详解
前言 Nobody can go back and start a new beginning,but anyone can start today and make a new ending. Name:Willam Time:2017/3/81、最短路径问题介绍问题解释: 从图中的某个顶点出发到达另外一个顶点的所经过的边的权重和最小的一条路径,称为最短路径解决问题的算法:...转载 2018-10-25 11:25:04 · 799 阅读 · 1 评论 -
程序员面试、算法研究、编程艺术、红黑树、机器学习5大系列集锦
(七月在线:https://www.julyedu.com/,面试 & 算法 & 机器学习在线课程) 作者:July--结构之法算法之道blog之博主。时间:2010年10月-2018年5月,一直在不断更新中..出处:http://blog.csdn.net/v_JULY_v 。说明:本博客中部分文章经过不断修改、优化,已集结出版成书《编程之法:面试和算法心...转载 2018-09-20 09:54:29 · 187 阅读 · 0 评论 -
ALS算法讲解
Kendall秩相关系数(Kendall rank correlation coefficient)对于秩变量对: 注:Sir Maurice George Kendall,1907~1983,英国统计学家。这个人职业生涯的大部分时间都是一个公务员,二战期间出任英国船运协会副总经理。1949年以后担任伦敦大学教授。参见:https://en.wikiped...转载 2018-08-14 20:10:32 · 16043 阅读 · 0 评论 -
LRU缓存实现(Java)
LRU是Least Recently Used 的缩写,翻译过来就是“最近最少使用”,LRU缓存就是使用这种原理实现,简单的说就是缓存一定量的数据,当超过设定的阈值时就把一些过期的数据删除掉,比如我们缓存10000条数据,当数据小于10000时可以随意添加,当超过10000时就需要把新的数据添加进来,同时要把过期数据删除,以确保我们最大缓存10000条,那怎么确定删除哪条过期数据呢,采用LRU算法...转载 2018-05-11 18:02:55 · 517 阅读 · 0 评论 -
LRU算法四种实现方式介绍
LRU全称是Least Recently Used,即最近最久未使用的意思。LRU算法的设计原则是:如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小。也就是说,当限定的空间已存满数据时,应当把最久没有被访问到的数据淘汰。实现LRU 1.用一个数组来存储数据,给每一个数据项标记一个访问时间戳,每次插入新数据项的时候,先把数组中存在的数据项的时间戳自增,并将新数据项的时...转载 2018-05-11 17:57:45 · 2535 阅读 · 1 评论 -
DFS——深度优先算法(Depth First Search)
1、前言这几天刷leetcode经常碰到DFS BFS的问题,之前一直也是模棱两可,凭着感觉做,是需要总结一下了。深度优先搜索(缩写DFS)是一种在开发爬虫早期使用较多的方法。属于图算法的一种,也是对一个连通图进行遍历的算法。其思想是:从一个顶点vv开始,沿着一条路线一直走到底,如果发现不能到达目标,那就返回到走不通节点的上一个节点,然后尝试从另一条路开始走到底,每个节点只可以访问一次。这种尽量往...转载 2018-04-24 15:17:57 · 407 阅读 · 0 评论 -
BFS——广度优先算法(Breadth First Search)
1、前言这几天刷leetcode经常碰到DFS BFS的问题,之前一直也是模棱两可,凭着感觉做,是需要总结一下了。广度优先搜索(也称宽度优先搜索,缩写BFS,以下采用广度来描述)是连通图的一种遍历策略。因为它的思想是从一个顶点V0V0开始,辐射状地优先遍历其周围较广的区域,因此得名。一般可以用它做什么呢?一个最直观经典的例子就是走迷宫,我们从起点开始,找出到终点的最短路程,很多最短路径算法就是基于...转载 2018-04-24 15:16:14 · 1040 阅读 · 0 评论 -
海量数据处理之Bloom Filter详解
前言 本博客内曾已经整理过十道海量数据处理面试题与十个方法大总结。接下来,本博客内会重点分析那些海量数据处理的方法,并重写十道海量数据处理的面试题。如果有任何问题,欢迎不吝指正。谢谢。一、什么是Bloom Filter Bloom Filter是一种空间效率很高的随机数据结构,它的原理是,当一个元素被加入集合时,通过K个Hash函数将这个元素映射成一个位阵列(Bit array)中的K...转载 2018-05-10 09:01:11 · 221 阅读 · 0 评论 -
B树、B+树、LSM树以及其典型应用场景
前言动态查找树主要有:二叉查找树、平衡二叉树、红黑树、B树、B+树。前面三种是典型的二叉查找树,查找的时间复杂度是O(log2N)与树的深度有关系,那么降低树的深度也就可以提升查找效率。这时就提出了平衡多路查找树,也就是B树以及B+树。B树和B+树非常典型的场景就是用于关系型数据库的索引(MySQL)B树B树是一种平衡多路搜索树,B树与红黑树最大的不同在于,B树的结点可以有多个子女,从几个到几千个...转载 2018-04-12 12:05:38 · 1739 阅读 · 0 评论