随笔分类 -  【0053】算法

摘要:序言 1.贪婪算法 2.动态规划算法 动态规划是解决多阶段决策过程最优化的一种方法。 众所周知,递归算法时间复杂度很高为(2^n),而动态规划算法也能够解决此类问题,动态规划的算法的时间复杂度为(n^2)。动态规划算法是以空间置换时间的解决方式 https://www.cnblogs.com/gol 阅读全文
posted @ 2020-12-22 22:12 ~沐风 阅读(337) 评论(0) 推荐(0) 编辑
摘要:序言 跳表(Skip List)是一种随机化的数据结构,插入、删除、查找的复杂度均为O(logN) 简单说来跳表也是链表的一种,只不过它在链表的基础上增加了跳跃功能,正是这个跳跃的功能,使得在查找元素时,跳表能够提供O(logN)的时间复杂度 二分查找要求元素可以随机访问,所以决定了需要把元素存储在 阅读全文
posted @ 2020-09-12 19:40 ~沐风 阅读(186) 评论(0) 推荐(0) 编辑
摘要:序言 二叉堆本质上是一种完全二叉树, 它分为两个类型。 1. 最大堆 2. 最小堆 最大堆 什么是最大堆呢? 最大堆的任何一个父节点的值, 都大于或等于它左、 右孩子节点的值。 最小堆 什么是最小堆呢? 最小堆的任何一个父节点的值, 都小于或等于它左、 右孩子节点的值。 二叉堆的根节点叫作堆顶。最大 阅读全文
posted @ 2020-01-02 22:54 ~沐风 阅读(189) 评论(0) 推荐(0) 编辑
摘要:序言 环形链表,类似于单链表,也是一种链式存储结构,环形链表由单链表演化过来。单链表的最后一个结点的链域指向NULL,而环形链表的建立,不要专门的头结点,让最后一个结点的链域指向链表结点。 简单点说链表首位相连,组成环状数据结构。如下图结构: 应用场景 而在环形链表中,最为著名的即是约瑟夫环问题。 阅读全文
posted @ 2019-12-29 17:45 ~沐风 阅读(174) 评论(0) 推荐(0) 编辑
摘要:序言 1.单向链表 只有一个指向下一个节点的指针。 优点:单向链表增加删除节点简单。遍历时候不会死循环; 缺点:只能从头到尾遍历。只能找到后继,无法找到前驱,也就是只能前进。 适用于节点的增加删除。 2.双向链表 有两个指针,一个指向前一个节点,一个后一个节点。 优点:可以找到前驱和后继,可进可退; 阅读全文
posted @ 2019-12-29 17:44 ~沐风 阅读(167) 评论(0) 推荐(0) 编辑
摘要:序言 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针实现的。 链表由一系列结点组成,结点可以在运行时动态生成,而且由于没有闲置的内存,因此空间效率比数组高。 其插入操作可达到O(1)复杂度,但是查找或者访问特定的结点复杂度是O(n)。 链表的实现可以是单向链表 阅读全文
posted @ 2019-12-28 23:29 ~沐风 阅读(197) 评论(0) 推荐(0) 编辑
摘要:序言 所谓稀疏数组就是数组中大部分的内容值都未被使用(或都为零),在数组中仅有少部分的空间使用。因此造成内存空间的浪费,为了节省内存空间,并且不影响数组中原有的内容值,我们可以采用一种压缩的方式来表示稀疏数组的内容。 应用 可以使用稀疏数组来保留类似前面的二维数组(棋盘,地图等) 把稀疏数组存盘,并 阅读全文
posted @ 2019-12-28 11:43 ~沐风 阅读(154) 评论(0) 推荐(0) 编辑
摘要:序言 资料 数据结构常见的八大排序算法(详细整理) https://yq.aliyun.com/articles/740396?spm=a2c4e.11155472.0.0.6ee817a7vwARIB 用 Java 实现的八种常用排序算法 阅读全文
posted @ 2019-12-28 10:51 ~沐风 阅读(131) 评论(0) 推荐(0) 编辑
摘要:序言 暴力匹配算法 如果用暴力匹配的思路,并假设现在str1匹配到 i 位置,子串str2匹配到 j 位置,则有: 暴力匹配算法实现. KMP算法介绍 KMP是一个解决模式串在文本串是否出现过,如果出现过,最早出现的位置的经典算法 Knuth-Morris-Pratt 字符串查找算法,简称为 “KM 阅读全文
posted @ 2019-12-26 22:46 ~沐风 阅读(215) 评论(0) 推荐(0) 编辑
摘要:序言 哈夫曼树又被称为最优二叉树,是一类带权路径最短的二叉树。哈夫曼树是二叉树的一种应用,在信息检索中很常用。 资料 阅读全文
posted @ 2019-12-25 22:47 ~沐风 阅读(195) 评论(0) 推荐(0) 编辑
摘要:序言 Trie并不是平衡树,也不一定非要有序。 Trie 树,也叫“字典树”。顾名思义,它是一个树形结构。它是一种专门处理字符串匹配的数据结构,用来解决在一组字符串集合中快速查找某个字符串的问题。 实现敏感词过滤 实现联想搜索 资料 https://blog.csdn.net/m0_37907797 阅读全文
posted @ 2019-12-05 20:12 ~沐风 阅读(330) 评论(0) 推荐(0) 编辑
摘要:序言 为什么需要树这种数据结构? 树是一种非常实用的数据结构,最常用的就是数据库的索引,用于在海量数据查找目标值。 举个例子,如果你的表有1亿的数据。如果使用链表来存储,那么你最坏情况下需要遍历1亿次才能找到目标值。 但如果你使用红黑树来查找,那你最坏情况下的时间复杂度为 O(logN),即最坏只需 阅读全文
posted @ 2019-07-10 09:42 ~沐风 阅读(196) 评论(0) 推荐(0) 编辑
摘要:序言 如今你的气质里,藏着你走过的路,读过的书和爱过的人。 线性代数存在的意义? 资料 https://zhuanlan.zhihu.com/p/20745625 https://www.jianshu.com/p/2a23f84a8283 https://www.cnblogs.com/Tenos 阅读全文
posted @ 2019-05-27 09:42 ~沐风 阅读(816) 评论(0) 推荐(0) 编辑
摘要:序言 资料 https://www.cnblogs.com/pig66/p/10675082.html https://www.cnblogs.com/fivestudy/p/10537611.html 阅读全文
posted @ 2019-04-09 11:54 ~沐风 阅读(124) 评论(0) 推荐(0) 编辑