https://blog.csdn.net/yeyazhishang/article/details/82353846
1、数组array https://www.bilibili.com/video/BV1ef4y1e7Qn
优点:按照索引遍历或查询速度快 缺点:数组的大小固定后就无法扩容了,只能存储一种类型的数据,添加,删除的操作慢,因为要移动其他的元素。适合:频繁查询,对存储空间要求不大,很少增加和删除的情况。
复杂度:访问O(1),搜索O(N),插入O(N),删除O(N)
力扣 485最大连续的个数 283零移动 27移除元素
2、栈 stack https://www.bilibili.com/video/BV1Lf4y1e7L9
栈常应用于实现递归功能方面的场景
复杂度:访问O(1),搜索O(N),插入O(1),删除O(1)
力扣 20有效的括号 496下一个更大元素
3、队列 queue https://www.bilibili.com/video/BV1xX4y1u7Jv/
使用场景:因为队列先进先出的特点,在多线程阻塞队列管理中非常适用。
复杂度:访问O(N),搜索O(N),插入O(1),删除O(1)
力扣 933最大请求次数 239滑动窗口最大值
4、链表link list https://www.bilibili.com/video/BV1oa4y1H7Vq
优点:添加删除元素快,缺点:查找慢,含指针信息空间大。适用于数据量较小,需要频繁增加,删除操作的场景
复杂度:访问O(N),搜索O(N),插入O(1),删除O(1)
力扣 203移除链表元素 206链表反转
5、树tree https://www.bilibili.com/video/BV1Ez4y1C7Yy/
二叉树是特殊的树,普通二叉树是指叶子节点最多有两个孩子,满二叉树是指除了叶子节点每个节点都有两个孩子,完全二叉树是指依次填满的
二叉树遍历根节点的位置:前序,中序(对二叉查找树进行中序遍历,得到有序集合),右序。
复杂度:
力扣 144二叉树前序遍历 94二叉树中序遍历 145二叉树后序遍历
6、散列表 hash table https://www.bilibili.com/video/BV1vV411h7nE
复杂度:访问,搜索O(1),插入O(1),删除O(1) 如果碰撞次数k 则是O(k)
力扣 217存在重复元素 389找不同 496下一个更大元素
7、堆:https://www.bilibili.com/video/BV1xa4y1H7rD
完全二叉树
堆中某个节点的值总是不大于或不小于其父节点的值
最大堆,最小堆,遍历,搜索,添加,删除
复杂度:访问 ,搜索O(N),插入O(log N),删除O(log N)
力扣 215数组中第K个最大元素 692前K个高频单词
8、图 https://www.bilibili.com/video/BV1gy4y1B75b
复杂度:访问O(N),搜索O(N),插入O(1),删除O(1)
力扣