标签:leetcode java implement queue using stacks
题目:
Implement the following operations of a queue using stacks.
push
to top
, peek/pop from top
, size
,
and is empty
operations are valid.解题:
用栈实现队列,这个比用队列实现栈要麻烦一些,这里用到两个栈,两种思路,第一种就是在进栈的时候,把栈逆序放在另外一个栈,出的时候直接出另外一个栈就可以了。第二种思路,进栈的时候不做任何处理,出栈的时候把栈逆序放在另外一个栈,出另外一个栈。下面就是两种的代码实现。
在进栈的时候进行处理:
class MyQueue { // Push element x to the back of queue. Stack<Integer> stack=new Stack<>(); Stack<Integer> stack2=new Stack<>(); public void push(int x) { while(!stack.isEmpty()) { stack2.push(stack.pop()); } stack2.push(x); while(!stack2.isEmpty()) { stack.push(stack2.pop()); } } // Removes the element from in front of queue. public void pop() { stack.pop(); } // Get the front element. public int peek() { return stack.peek(); } // Return whether the queue is empty. public boolean empty() { return stack.isEmpty(); } }在出栈的时候进行处理:
class MyQueue2 { // Push element x to the back of queue. Stack<Integer> stack=new Stack<>(); Stack<Integer> stack2=new Stack<>(); public void push(int x) { while(!stack2.isEmpty()) stack.push(stack2.pop()); stack.push(x); } // Removes the element from in front of queue. public void pop() { while(!stack.isEmpty()) stack2.push(stack.pop()); stack2.pop(); } // Get the front element. public int peek() { while(!stack.isEmpty()) stack2.push(stack.pop()); return stack2.peek(); } // Return whether the queue is empty. public boolean empty() { while(!stack2.isEmpty()) stack.push(stack2.pop()); return stack.isEmpty(); } }
版权声明:本文为博主原创文章,未经博主允许不得转载。
LeetCode232 Implement Queue using Stacks Java 题解
标签:leetcode java implement queue using stacks
原文地址:http://blog.csdn.net/u012249528/article/details/46815113