225. Implement Stack using Queues (Easy)

来源:互联网 发布:天猫淘宝商城围巾 编辑:程序博客网 时间:2024/05/16 23:33

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. Notes: You must use only standard
operations of a queue – which means only push to back, peek/pop from
front, size, and is 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).

用队列实现栈的功能,需要用到两个队列,代码如下:

Solution:

Java:

    class MyStack {        Queue<Integer> q1 = new LinkedList<>();        Queue<Integer> q2 = new LinkedList<>();        // Push element x onto stack.        public void push(int x) {            q1.add(x);        }        // Removes the element on top of the stack.        public void pop() {            if(q1.isEmpty()) return ;            q2.clear();            while(q1.size() != 1) {                q2.add(q1.poll());            }            q1.poll();            while(!q2.isEmpty()) {                q1.add(q2.poll());            }        }        // Get the top element.        public int top() {            if(!q1.isEmpty()) {                q2.clear();                while(q1.size() != 1) {                    q2.add(q1.poll());                }                int result = q1.poll();                while(!q2.isEmpty()) {                    q1.add(q2.poll());                }                q1.add(result);                return result;            }            return -1;        }        // Return whether the stack is empty.        public boolean empty() {            return q1.isEmpty();        }    }
0 0