一、栈与队列理论基础
学习:
1. 定义
- 栈先进后出
- 队列先进先出
2. 底层实现
均可以通过数组或链表进行实现
二、232.用栈实现队列
题目链接:
学习前:
思路:
无
学习后:
- 不同方法有部分功能实现是一致的,则可以进行抽象提取,实现复用性
- 两个栈实现队列
时间复杂度:入队为O(1),队首元素和出队为O(n)
空间复杂度:O(1)
三、225.用队列实现栈
题目链接:
学习前:
思路:
用两个队列实现一个栈,每次把length-1个元素放入队列二,队列1用于pop,peek,push
时间复杂度:插入为O(1),栈顶元素和出栈为O(n)
空间复杂度:O(1)
学习后:
用一个队列实现一个栈,通过不断地pop和push,使得最后一个元素变成入队元素
四、学习总结
- 时间:3h
- 学会自己写一个栈和队列数据结构的实现类