Skip to content

strictnerd/awesome-alg

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 

Repository files navigation

awesome-alg

不懂算法的产品经理就是没有灵魂的段子手

一致性hash算法文字解释:https://zhuanlan.zhihu.com/p/363440761

为什么Redis一定要用跳表来实现有序集合?首先跳表是一个带索引的链表,能够实现元素的快速访问,其查询复杂度和红黑树一样O(logn),之所以redis不用红黑树的原因是红黑树过于复杂。跳表实现起来非常简单,具体实现见:https://github.com/strictnerd/awesome-alg/tree/main/java/skiplist

有了如此高效的散列表,为什么还需要二叉树? 其实散列表查询时间复杂度为O(1),但是它仅仅对KV数据的查询,很多Nosql数据库底层都是基于散列表实现,但是在日常工作中,我们更常用的查询一串数据,而且这一串数据存在顺序关系,可能你会说了,那可以使用数组啊,数组的查询速度也是O(1),但是数据不仅仅是查找更多的是修改和删除,二叉树相对是一种更适用的数据结构。

字符串匹配的几种算法?BF(暴力破解)、RK(字符串hash后在比较,防止出现hash冲突,hash相等之后需要再次比较原字符串) BM(该算法采用坏字符串和好后缀规则,一次移动多位,减少匹配次数)

搜索引擎的关键词提示功能如何实现?可以考虑使用trie字典树实现,每个节点上存储一个字母,输入一个关键词,依次遍历,搜索复杂度决定于关键词本身的大小?但如果一个前缀包含大量重复关键词怎么办?比如汉字?

字符串匹配算法、霍夫曼编码、词典树基本不懂是怎么回事?

动态规划的整体思路是暴力求解、找出规律、写递归方程

About

不懂算法的产品经理就是没有灵魂的段子手

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages