散列表 概述 散列表Hash Table来源于数组,它借助散列函数对数组这种数据结构进行扩展,利用的是数组支持按照下标随机访问元素的特性。 需要存储在散列表中的数据我们称为键key,将键转化为数组下标的方法hash(ke…
数据结构与算法之美-散列表(中)
散列表碰撞攻击 在极端情况下,有些恶意的攻击者,还有可能通过精心构造的数据,使得所有的数据经过散列函数之后,都散列到同一个槽里。 如果我们使用的是基于链表的冲突解决方法,那这个时候,散列表就会退化为链表,查询的时间复杂度…
数据结构与算法之美-散列表(下)
散列表和链表组合使用 LRU缓存淘汰算法 借助散列表,我们可以把LRU缓存淘汰算法的时间复杂度降为O(1)。 一个缓冲cache系统主要包含以下操作 往缓存中添加一个数据; 从缓存中删除一个数据; 在缓存中查找一个数据。…
数据结构与算法之美-字符串匹配(上)
BF (Brute Force) 暴力/朴素匹配算法 主串和模式串 我们在字符串 A 中查找字符串 B,那字符串 A 就是主串,字符串 B 就是模式串。 我们把主串的长度记作 n,模式串的长度记作 m。因为我们是在主串中…