1. 单链表、双向链表 2. 栈队列 ## 数组做队列 1. 数组固定长度,两个指针追赶。只用一个元素时不好实现。 2. 添加变量队列元素个数。begin和end解耦。 ## 栈随时获取最小值 1. 数据栈 2. 最小栈(弹出后依然能获取最小值) 3. 压栈,数据栈正常压入,最小栈如果压入数小于栈顶则亚如当前数,如果大于则重复压入栈顶。 4. 弹出同步弹出。 ## 图优先遍历 深度优先遍历:栈 宽度优先遍历:队列 ## 栈实现队列 1. 设置push栈和pop栈,两个来回倒,push压入,弹出时push中的数据放入pop中,从pop中弹出。(一次性倒完,) ## 队列实现栈 1. 压栈放入一个队列中,需要弹栈的时候将全部放入另一个队列中,留下最后一个弹出。 2. 再次放入,再放在当前队列中存入,弹出的时候,再次导入另一个队列中,最后一个弹出。 ## 递归 ### 递归改非递归 使用系统栈。树遍历。 递归到动态规划。 大化小,递归图。 ## Master公式分析递归时间复杂度 子问题规模一致 ## 哈希表 HashMap ## 有序表 TreeMap ## 归并排序