跳表
如何给有序的链表加速
原始链表:
添加第一级索引
进一步提高查找速度,添加第二级索引
以此类推
跳表查询的时间复杂度分析
每一级索引的个数:n/2、n/4、n/8、....n/(k^2)
假设有 h
级索引,最高级的索引有2个节点,那么 n/(h^2) = 2
,则 h=log2(n)-1
所以跳表查询的时间复杂度为 O(logn)
注意 跳表在增加和删除元素的时候,所有的索引都要更新一遍,所以时间复杂度也为 O(logn)
跳表的空间复杂度分析
关于做算法题
如果看到题目的时候很懵,没有一点思路怎么办?
- 先思考暴力是否可以
- 分析基本情况
- 泛化,找最近 重复 子问题