- 常用数据结构
数组 :分配空间固定,地址连续,随机取一个数时间复杂度为O(1)
链表(单链表,双链表) 适合快速增删
栈(后进先出)
队列(FIFO先进先出)
树:二叉树遍历(递归方式和非递归方式 )红黑树 B树
图 主要考察路径查找
- STL与底层实现:
顺序容器:
vector 数组
list 双向链表
deque 双端队列 中央控制器和多个缓冲区 适合首尾进行存取操作
stack list或deque
queue list或deque
priority_queue 底层一般为vector,用堆的管理规则
后面新增:sList 单向链表
关联容器:
map 红黑树 每一节点包含<key,value>,缺省时递增有序 搜索时间复杂度为log(n)
multimap红黑树
hashmap 哈希表
hash_multimap哈希表
unordered_map 哈希表 无序 搜索时间复杂度为log(1),最坏为log(n)
------------------------------------------------------------------------------------------------------------------------------------
set 红黑树 每一节点只包含一个元素,元素不重复,有序
multiset红黑树
hashset哈希表
hash_multiset哈希表
unordered_set 哈希表
考点
1.删除(有序/无序)数组中重复出现的数字【数组、vector】
2.判断单链表是否有环,环的入点,环的长度,链表长度【链表】
3.判断两个单链表是否有公共节点
4.反转单链表
5.查找单链表的倒数第k个节点,要求只能遍历一次链表
6.两个有序单链表合并成一个有序链表
7.两个栈实现队列
8.两个队列实现一个栈
9.图的深度优先,广度优先,Dijkstra等算法
10.最大堆和最小堆
11.红黑树的特性和操作时间复杂度
12.哈希表解决冲突的方法
13.未完待续....