1 链表与邻接表
|
|
1.1 用数组模拟链表
- 用数组模拟单链表(静态链表): 邻接表(存储图和树)
- O(1)时间找下一个点, O(n)时间找上一个点
|
|
1.2 用数组模拟双链表
- 每个节点有两个指针, 指向前后 l[N], r[N], 0对应head, 1对应tail, 两个边界不包含实质内容
|
|
2 栈与队列
2.1 模拟栈
|
|
2.2 单调栈
- 求每一个数左边离它最近且比它小的数, 没有返回-1
- 事实上对于这样的要求, 只需要保留单调上升序列即可, 逆序对的第一个元素删掉
|
|
2.3 滑动窗口里的最大值和最小值 (单调队列)
- 在找最小值时, 只要前面的元素比后面的元素大, 那么大的元素一定没有用
- 找最大值是完全对称的写法
3 kmp
- 暴力怎么做
- 如何优化
- next[i] = j表示p[1,…,j] = p[i-j+1,…,i]
|
|