微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

基础数据结构

1.时间复杂度

@H_502_19@ @H_502_19@ @H_502_19@ @H_502_19@ @H_502_19@ @H_502_19@
数据结构 根据索引查找 根据关键字查找 插入 删除
数组(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.空间复杂度

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

高级数据结构

@H_502_19@ @H_502_19@ @H_502_19@ @H_502_19@ @H_502_19@ @H_502_19@ @H_502_19@ @H_502_19@ @H_502_19@
数据结构 各类操作时间复杂度 能够解决哪些问题 面试考察频率 学习难度
堆(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.空间复杂度

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐