🖨️ 链表问题集锦

链表问题在面试过程中也是很重要也很基础的一部分,链表本身很灵活,很考查编程功底,所以是很值得考的地方。我将复习过程中觉得比较好的链表问题整理了下。

📃 数组

旋转数组的二分查找与基本二分查找不同。旋转数组是一个部分有序的数组

🕖 kmp算法

KMP算法是一种改进的字符串匹配算法。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。python中可以使用find函数

☂️ 二分查找(有序)

二分搜索(binary search)是一种在有序数组中查找某一特定元素的搜索算法。算法复杂度是 log(n)

🥋 二分查找(旋转数组&山脉数据)

旋转数组的二分查找与基本二分查找不同。旋转数组是一个部分有序的数组,每次mid的左侧或者右侧是一个有序数组,所以判断条件要复杂很多。山脉数组又与旋转数据有些区别,山脉数组判断条件是mid、mid+1

🥅 哈希表

hash表的增删改查的平均时间复杂度都是O(1)

🎁 Bloom Filter概念和原理

根据哈希原理,Bloom Filter通过多个哈希函数将每一个字符串映射到内存中的每一位。判断一个元素是否属于某个集合时,Boom Filter可以把不属于这个集合的元素准确标注出来;但是有可能会把不属于这个集合的元素误认为属于这个集合

🖼️ Python 的小顶堆 heapq

今天介绍一个 Python 的库heapq,默认的堆结构是小顶堆。在很多时候使用优先队列解决问题的时候会用到。在后面和大家一起 LeetCode 刷题过程中会用到!

🪞 python的数组、栈与队列

站的list类似于vector。栈与队列可以使用python中的collections.deque

📯 Python dict和set的底层原理

python的dict、set都是基于散列表的结构。