11、字符串匹配:如何实现最快的grep工具

你好,我是微扰君。 grep命令,相信使用过Linux的同学都会非常熟悉,我们常常用它在Linux上进行文本搜索操作,具体来说就是从一段文本中查找某个字符串存在的行。下面一个典型的grep的使用例子,比如我可以用它来看看自己在LeetCode上用Ja...

10、搜索算法: 一起来写一个简单的爬虫

你好,我是微扰君。 你玩过井字棋的游戏吗?在一个九宫格中,双方轮流用X和O占领一个格子,某一方的O或者X三个连成一线时即可获胜。 这样一个简单井字棋的游戏,如果要让你自己写代码实现一个AI,你会怎么做呢?怎么把博弈过程清晰地表示出来呢? 实际上,许多...

9、二分:如何高效查询Kafka中的消息

你好,我是微扰君。 今天我们来学习另一个常用的算法思想,二分法。这个算法思想相信即使你没有什么开发经验也不会感到陌生,而且之前讲红黑树的时候我们也简单聊过。 不知道你有没有玩过“猜数字”的游戏。大家规定一个范围,一个人在心里想一个这个范围内的具体数字...

8、外部排序:如何为TB级数据排序

你好,我是微扰君。 之前已经学习了常用数据结构的工业级实现(包括动态数组、双向链表、双端队列、栈、哈希表、红黑树、堆),从今天开始,我们来讲讲一些经典的算法思想在工程实践中的应用。 那讲哪些算法呢?我们都知道算法是一个很大的命题,也有很多分类的方式,...

7、堆:如何实现一个高效的优先队列

你好,我是微扰君。 上一讲学习了基于红黑树的ordered_map的实现,今天我们来介绍另外一种有趣的树,heap,也就是堆。堆的应用非常广泛,我们常说的堆排序的堆就是指这种树状数据结构,除此之外还可以用来解决诸如TopK,或者合并多个有序小文件之类...

13435363738243