我的梦想
不是每个人都应该像我这样去建造一座水晶大教堂,但是每个人都应该拥有自己的梦想,设计自己的梦想,追求自己的梦想,实现自己的梦想。梦想是生命的灵魂,是心灵的灯塔,是引导人走向成功的信仰。有了崇高的梦想,只要矢志不渝地追求,梦想就会成为现实,奋斗就会变成壮举,生命就会创造奇迹。——罗伯·舒乐
  听听音乐
24.回溯算法 24.回溯算法
回溯算法[TOC] 深度优先搜索算法利用的是回溯算法思想,它还用在很多实际的软件开发场景中,比如正则表达式匹配、编译原理中的语法分析等。除此之外,很多经典的数学问题都可以用回溯算法解决,比如数独、八皇后、0-1 背包、图的着色、旅行商问题、
2019-11-09 小小明
23.分治算法 23.分治算法
分治算法[TOC] 分治算法用四个字概括就是“分而治之”,将原问题划分成 n 个规模较小而结构与原问题相似的子问题,递归地解决这些子问题,然后再合并其结果,就得到原问题的解。 分治算法的典型的两种应用场景,一个是用来指导编码,降低问题求解的
2019-11-09 小小明
22.贪心算法 22.贪心算法
贪心算法:如何用贪心算法实现Huffman压缩编码?贪心算法(greedy algorithm),这种算法思想更多的是指导设计基础算法。贪心算法的经典应用有,霍夫曼编码(Huffman Coding)、Prim 和 Kruskal 最小生成
2019-11-09 小小明
21.AC自动机 21.AC自动机
AC自动机很多支持用户发表文本内容的网站,比如 BBS,大都会有敏感词过滤功能,用来过滤掉用户输入的一些淫秽、反动、谩骂等内容。 实际上,这些功能最基本的原理就是字符串匹配算法,也就是通过维护一个敏感词的字典,当用户输入一段文字内容之后,通
2019-11-09 小小明
20.Trie树 20.Trie树
“Trie 树”的介绍Trie 树也叫“字典树”,是一种专门处理字符串匹配的树形结构,用来解决在一组字符串集合中快速查找某个字符串的问题。 Trie 树特有的优点,决定它特别适合做搜索引擎的搜索关键词提示功能:在搜索引擎的搜索框中,输入要搜
2019-11-09 小小明
19.字符串匹配基础 19.字符串匹配基础
字符串匹配基础字符串匹配算法编程语言提供的字符串查找函数,比如 Java 中的 indexOf(),Python 中的 find() 函数等,它们底层就是依赖接下来要讲的字符串匹配算法。 单模式字符串匹配算法有简单的BF 算法和 RK 算法
2019-11-09 小小明
18.深度和广度优先搜索 18.深度和广度优先搜索
BFS&DFS“搜索”算法深度优先搜索算法和广度优先搜索算法都是基于“图”这种数据结构。 图上的搜索算法就是,在图中找出从一个顶点出发,到另一个顶点的路径。图上的搜索算法有深度优先、广度优先搜索算法,和$A$、$IDA$ 等启发式搜
2019-11-09 小小明
17.图的表示 17.图的表示
图图的概念图(Graph)和树比起来,是一种更加复杂的非线性表结构。 顶点&边树中的元素称为节点,图中的元素叫作顶点(vertex)。图一个顶点可以与任意其他顶点建立连接关系,这种建立的关系叫边(edge)。 在微信中,可以把每个
2019-11-09 小小明
16.堆 16.堆
堆堆的概念堆是一种特殊的树: 堆是一个完全二叉树; 堆中每一个节点的值都必须大于等于(或小于等于)其子树中每个节点的值。 堆必须是一个完全二叉树,除了最后一层,其他层的节点个数都是满的,最后一层的节点都靠左排列。 堆中的每个节点的值必须
2019-11-09 小小明
15.递归树 15.递归树
递归树与时间复杂度分析有些代码比较适合用递推公式来分析,比如归并排序的时间复杂度、快速排序的最好情况时间复杂度;有些比较适合采用递归树来分析,比如快速排序的平均时间复杂度。而有些可能两个都不怎么适合使用,比如二叉树的递归前中后序遍历。 一般
2019-11-09 小小明
14.红黑树 14.红黑树
二叉查找树平衡二叉查找树二叉查找树是最常用的一种二叉树,它支持快速插入、删除、查找操作,各个操作的时间复杂度跟树的高度成正比,理想情况下,时间复杂度是 O(logn)。但二叉查找树在频繁的动态更新过程中,可能会出现树的高度远大于 $log_
2019-11-09 小小明
13.二叉树基础 13.二叉树基础
二叉树基础树(Tree)树是一种非线性表结构,比线性表的数据结构要复杂得多: 树的种类 树,二叉树 二叉查找树 平衡二叉查找树、红黑树 递归树 “树”的特征: “树”这种数据结构里面每个元素叫作“节点”;用来连
2019-11-09 小小明
1 / 3