leetcode解题之225 # Implement Stack using Queuest Java版 (用两个队列实现一个栈)
来源:互联网 发布:mac怎么输入对勾符号 编辑:程序博客网 时间:2024/06/02 19:09
225. Implement Stack using Queues
Implement the following operations of a stack using queues.
- push(x) -- Push element x onto stack.
- pop() -- Removes the element on top of the stack.
- top() -- Get the top element.
- empty() -- Return whether the stack is empty.
- You must use only standard operations of a queue -- which means only
push to back
,peek/pop from front
,size
, andis empty
operations are valid. - Depending on your language, queue may not be supported natively. You may simulate a queue by using a list or deque (double-ended queue), as long as you use only standard operations of a queue.
- You may assume that all operations are valid (for example, no pop or top operations will be called on an empty stack).
可以用两个Queue来轮流存储数据,当执行pop,top等指令时,因为要返回Queue中最后一个element,所以把之前的所有elements压到另外一个空queue中,剩下唯一一个element的时候,实现poll返回。依次交替
注意事项:pop,top等取出行为,要先检查两个queue是不是都为空
import java.util.LinkedList;import java.util.Queue;public class MyStack {Queue<Integer> q1 = new LinkedList<Integer>();Queue<Integer> q2 = new LinkedList<Integer>();/** Initialize your data structure here. */public MyStack() {}/** Push element x onto stack. */public void push(int x) {if (q2.isEmpty()) {q1.offer(x);} elseq2.offer(x);}/** Removes the element on top of the stack and returns that element. */public int pop() {while (!q2.isEmpty()) {if (q2.size() == 1)return q2.poll();q1.offer(q2.poll());}while (!q1.isEmpty()) {if (q1.size() == 1)return q1.poll();q2.offer(q1.poll());}return -1;}/** Get the top element. */public int top() {while (!q2.isEmpty()) {if (q2.size() == 1) {int x = q2.peek();q1.offer(q2.poll());return x;}q1.offer(q2.poll());}while (!q1.isEmpty()) {if (q1.size() == 1) {int x = q1.peek();q2.offer(q1.poll());return x;}q2.offer(q1.poll());}return -1;}/** Returns whether the stack is empty. */public boolean empty() {return q1.isEmpty() && q2.isEmpty();}}
0 0
- leetcode解题之225 # Implement Stack using Queuest Java版 (用两个队列实现一个栈)
- 两个队列实现一个栈[leetcode]Implement Stack using Queues
- [LeetCode-225] Implement Stack using Queues(两个队列实现栈)
- Implement Stack using Queues 两个队列实现一个栈
- 【LeetCode-面试算法经典-Java实现】【225-Implement Stack using Queues(用队列实现栈操作)】
- LeetCode 225 Implement Stack using Queues(用队列来实现栈)(*)
- Leetcode 225 Implement Stack using Queues 使用队列实现栈
- LeetCode OJ 之 Implement Stack using Queues(使用队列实现栈)
- leetcode:用两个栈实现一个队列 Implement Queue using Stacks
- LeetCode 225 Implement Stack using Queues(利用队列实现栈)
- [LeetCode-232] Implement Queue using Stacks(两个栈实现一个队列)
- 栈-Implement Stack using Queues(用队列实现栈)
- 225. Implement Stack using Queues (用队列实现栈)
- leetcode 225. Implement Stack using Queues 双队列实现栈
- LeetCode Implement Stack using Queues 栈&队列
- LeetCode学习之-225. 利用队列实现堆栈(Implement Stack using Queues)
- 225. Implement Stack using Queues 用两个队列实现栈的基本操作。
- LeetCode 225. Implement Stack using Queues(使用队列来实现栈)
- redis文章评论
- CCF201609(3)炉石传说
- [LeetCode]120. Triangle
- SSM整合 -- 在Eclipse怎么创建一个Maven项目
- 设置多个泛型
- leetcode解题之225 # Implement Stack using Queuest Java版 (用两个队列实现一个栈)
- 暴力——AtCoder Regular Contest 070 #D No need
- 六.负载均衡的算法
- UVA-540 Team Queue
- 栈的实现-顺序栈和链栈
- Solr.NET快速入门(六)【核心管理,Fluent API】
- 第一天
- 用vbscript实现qq自动登陆
- Lettcode_516. Longest Palindromic Subsequence