基础数据结构
1.时间复杂度
数据结构 | 根据索引查找 | 根据关键字查找 | 插入 | 删除 | @H_502_19@
---|---|---|---|---|
数组(Array) | O(1) | O(n) | O(n) | O(n) | @H_502_19@
队列(queue) | O(n) | O(n) | O(1) | O(1) | @H_502_19@
链表(Linked list) | O(n) | O(n) | O(1) | O(1) | @H_502_19@
二叉树(Binary Search Tree) 平均情况 | O(log(n)) | O(log(n)) | O(log(n)) | @H_502_19@|
二叉树(Binary Search Tree) 最坏 | O(n) | O(n) | O(n)) | @H_502_19@
2.空间复杂度
数据结构 | 数组 | 队列 | 链表 | 二叉树 | @H_502_19@
---|---|---|---|---|
空间复杂度 | O(1) | O(1) | O(1) | O(1) | @H_502_19@
高级数据结构
数据结构 | 各类操作时间复杂度 | 能够解决哪些问题 | 面试考察频率 | 学习难度 | @H_502_19@
---|---|---|---|---|
堆(Heap) | O(log(n)): push,pop; O(1):top | 全局动态找最大最小 | 高 | 低 | @H_502_19@
哈希表(Hash table) | O(1): insert,find,delete | 查询元素是否存在,key-value查询问题 | 高 | 低 | @H_502_19@
前缀树(Trip) | O(1): insert,delete | 和哈希表解决问题类似,查询元素是否存在,key-value查询问题 | 中 | 低 | @H_502_19@
并查集(UnionFind) | O(1): union,find | 动态合并集合并判断两个元素是否在同一个集合 | 中 | 低 | @H_502_19@
平衡排序二叉树(Balanced BST) | O(log(n)): insert,delete,max,min,lower,upper | 动态增删查改并支持找全局最大最小值; 找比某个数大的最小值和比某个数小的最大值可以用(尽可能接近) | 低 | 高 | @H_502_19@
跳跃表(Skip List) | O(log(n)): insert,upper | 和Balanced BST解决的问题一样,并能一直维持一个有序链表 | 低 | 高 | @H_502_19@
树状数组(Binary Indexed Tree) | O(log(n)): insert,range,sum | 增删改的同时,解决区间求和问题 | 低 | 中 | @H_502_19@
线段树(Segment Tree) | O(log(n)): insert,range max,range min,range sum,upper; O(1):global max,global min | 增删改的同时,解决区间求值问题,sum 等等可以完全替代 | 低 | 中 | @H_502_19@
2.空间复杂度
数据结构 | 堆 | 哈希表 | 前缀树 | 并查集 | 平衡排序二叉树 | 跳跃表 | 树状数组 | 线段树 | @H_502_19@
---|---|---|---|---|---|---|---|---|
空间复杂度 | O(1) | O(1) | O(1) | O(1) | O(1) | O(1) | O(log(n)) | O(1) | @H_502_19@
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。