admin管理员组文章数量:1636931
题目链接:https://leetcode/problems/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).
- class MyStack {
- Queue<Integer> q1 = new LinkedList<Integer>();
- Queue<Integer> q2 = new LinkedList<Integer>();
- // Push element x onto stack.
- public void push(int x) {
- Queue<Integer> tmp = new LinkedList<Integer>();
- q1.offer(x);
- //更新q2队列,将x放到q2正确的位置
- while(!q2.isEmpty()){
- tmp.offer(q2.poll());
- }
- q2.offer(x);
- while(!tmp.isEmpty()){
- q2.offer(tmp.poll());
- }
- }
- // Removes the element on top of the stack.
- public void pop() {
- Queue<Integer> tmp = new LinkedList<Integer>();
- q2.poll();
- int i = 0;
- while(!q1.isEmpty()){
- i = q1.poll();
- if(!q1.isEmpty()){ //q1倒数第一个元素不要了
- tmp.offer(i);
- }
- }
- while(!tmp.isEmpty()){
- q1.offer(tmp.poll());
- }
- }
- // Get the top element.
- public int top() {
- return q2.peek();
- }
- // Return whether the stack is empty.
- public boolean empty() {
- return q1.isEmpty();
- }
- }
本文标签: implementLeetCodequeuesStack
版权声明:本文标题:【Leetcode】Implement Stack using Queues 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1729234784a1191867.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论