2力扣题做题笔记及复盘--232. 用栈实现队列(栈)
232. 用栈实现队列 - 力扣(LeetCode)
1、使用栈实现队列的下列操作:
push()-- 将一个元素放入队列的尾部。
pop() -- 从队列首部移除元素。
peek() -- 返回队列首部的元素。
empty() -- 返回队列是否为空。
2、思路:
主要在弹出元素方法中,栈的方式是先进后出,队列的方式的先进先出,那要将栈实现队列的效果,就需要两个栈来倒数据,第一个栈存储数据,第二个栈从第一个栈中倒过来数据,形成的效果就是第二栈的数据本来是第一个进的,倒过来后就变成第一个出的了。
3、代码:
class MyQueue { Stack<Integer> stackIn; Stack<Integer> stackOut; public MyQueue() { stackIn = new Stack<>(); stackOut = new Stack<>(); } public void push(int x) { stackIn.push(x); } public int pop() { dumpStackOut(); return stackOut.pop(); } public int peek() { dumpStackOut(); return stackOut.peek(); } public boolean empty() { return stackOut.isEmpty() && stackIn.isEmpty(); } //将StackIn 倒入到 StackOut中 public void dumpStackOut(){ if(!stackOut.isEmpty()) return; while(!stackIn.isEmpty()){ stackOut.push(stackIn.pop()); } } }
4、总结
这里主要是对栈数据结构的应用。