潍坊网站建设 APP开发小程序,外贸建站平台,wordpress邮件找客户端,南京绿色建筑网官网队列实现栈我们昨天实现了如何用两个栈实现队列,原理很简单,今天我们来实现一下如何用队列实现栈,原理更简单。解题思路:我们利用队列先进先出的特点,每次队列模拟入栈时,我们先将队列之前入队的元素都出列…
队列实现栈
我们昨天实现了如何用两个栈实现队列,原理很简单,今天我们来实现一下如何用队列实现栈,原理更简单。
解题思路:我们利用队列先进先出的特点,每次队列模拟入栈时,我们先将队列之前入队的元素都出列,仅保留最后一个进队的元素。然后再重新入队,这样就实现了颠倒队列中的元素。比如我们首先入队1,然后再入队2,我们需要将元素1出队,然后再重新入队,则实现了队列内元素序列变成了2,1。
废话不多说,我们继续看动图
下面我们来看一下题目代码,也是很容易理解。
class MyStack {//初始化队列Queue<Integer> queue;public MyStack() {queue = new LinkedList<>(); }//模拟入栈操作public void push(int x) {queue.offer(x);//将之前的全部都出队,然后再入队for(int i = 1;i<queue.size();i++){queue.offer(queue.poll());}} //模拟出栈public int pop() {return queue.poll();}//返回栈顶元素public int top() {return queue.peek();} //判断是否为空public boolean empty() {return queue.isEmpty();}
}
这个也是一个很经典的问题,面试的时候经常用到,大家记得打卡啊。
题目来源:leetcode225. 用队列实现栈