面试必备:数据结构时间复杂度及用法大全

基础数据结构

1.时间复杂度

数据结构 根据索引查找 根据关键字查找 插入 删除
数组(Array) O(1) O(n) O(n) O(n)
队列(queue) O(n) O(n) O(1) O(1)
链表(Linked list) O(n) O(n) O(1) O(1)
二叉树(Binary Search Tree) 平均情况 O(log(n)) O(log(n)) O(log(n))
二叉树(Binary Search Tree) 最坏 O(n) O(n) O(n))

2.空间复杂度

数据结构 数组 队列 链表 二叉树
空间复杂度 O(1) O(1) O(1) O(1)

高级数据结构

数据结构 各类操作时间复杂度 能够解决哪些问题 面试考察频率 学习难度
堆(Heap) O(log(n)): push,pop; O(1):top 全局动态找最大最小
哈希表(Hash table) O(1): insert,find,delete 查询元素是否存在,key-value查询问题
前缀树(Trip) O(1): insert,delete 和哈希表解决问题类似,查询元素是否存在,key-value查询问题
并查集(UnionFind) O(1): union,find 动态合并集合并判断两个元素是否在同一个集合
平衡排序二叉树(Balanced BST) O(log(n)): insert,delete,max,min,lower,upper 动态增删查改并支持找全局最大最小值; 找比某个数大的最小值和比某个数小的最大值可以用(尽可能接近)
跳跃表(Skip List) O(log(n)): insert,upper 和Balanced BST解决的问题一样,并能一直维持一个有序链表
树状数组(Binary Indexed Tree) O(log(n)): insert,range,sum 增删改的同时,解决区间求和问题
线段树(Segment Tree) O(log(n)): insert,range max,range min,range sum,upper; O(1):global max,global min 增删改的同时,解决区间求值问题,sum 等等可以完全替代

2.空间复杂度

数据结构 哈希表 前缀树 并查集 平衡排序二叉树 跳跃表 树状数组 线段树
空间复杂度 O(1) O(1) O(1) O(1) O(1) O(1) O(log(n)) O(1)

相关文章

背景:计算机内部用补码表示二进制数。符号位1表示负数,0表...
大家好,我们现在来讲解关于加密方面的知识,说到加密我认为不...
相信大家在大学的《算法与数据结构》里面都学过快速排序(Qui...
加密在编程中的应用的是非常广泛的,尤其是在各种网络协议之...
前言我的目标是写一个非常详细的关于diff的干货,所以本文有...
对称加密算法 所有的对称加密都有一个共同的特点:加密和...