学习目标:
理论基础
● 232.用栈实现队列
● 225. 用队列实现栈
学习笔记:
232.用栈实现队列
使用栈实现队列的下列操作:
push(x) – 将一个元素放入队列的尾部。
pop() – 从队列首部移除元素。
peek() – 返回队列首部的元素。
empty() – 返回队列是否为空。
方法:用双栈来操作,一个当作输入栈,一个当输出栈;在push数据的时候,只要数据放进输入栈就好,但在pop的时候,操作就复杂一些,输出栈如果为空,就把进栈数据全部导入进来(注意是全部导入),再从出栈弹出数据,如果输出栈不为空,则直接从出栈弹出数据就可以了。
- 用队列实现栈
使用队列实现栈的下列操作:
push(x) – 元素 x 入栈
pop() – 移除栈顶元素
top() – 获取栈顶元素
empty() – 返回栈是否为空
方法:
使用一个队列实现栈:只能实现存和取两个操作其中一个时间复杂度为O(1)另一个为O(n);因为本题有 Pop 和 Top 两个读取操作,所以采取的模式是写入为 O(n),读取为 O(1);所谓实现栈和O(n)就是在入队或出队时循环前n-1个节点,从队首出队后立即再加入队排在队尾,即实现队反序