232. Implement Queue using Stacks
Implement the following operations of a queue using stacks.
Example:
MyQueue queue = new MyQueue(); queue.push(1); queue.push(2); queue.peek(); // returns 1 queue.pop(); // returns 1 queue.empty(); // returns false
Notes:
push to top, peek/pop from top, size, and is empty operations are valid.
package leetcode.easy;
public class ImplementQueueUsingStacks {
@org.junit.Test
public void test1() {
MyQueue1 queue = new MyQueue1();
queue.push(1);
queue.push(2);
System.out.println(queue.peek()); // returns 1
System.out.println(queue.pop()); // returns 1
System.out.println(queue.empty()); // returns false
}
@org.junit.Test
public void test2() {
MyQueue2 queue = new MyQueue2();
queue.push(1);
queue.push(2);
System.out.println(queue.peek()); // returns 1
System.out.println(queue.pop()); // returns 1
System.out.println(queue.empty()); // returns false
}
}
class MyQueue1 {
private java.util.Stack<Integer> s1 = new java.util.Stack<>();
private java.util.Stack<Integer> s2 = new java.util.Stack<>();
private int front;
/** Initialize your data structure here. */
public MyQueue1() {
}
/** Push element x to the back of queue. */
public void push(int x) {
if (s1.empty()) {
front = x;
}
while (!s1.isEmpty()) {
s2.push(s1.pop());
}
s2.push(x);
while (!s2.isEmpty()) {
s1.push(s2.pop());
}
}
// Removes the element from the front of queue.
public int pop() {
int temp = s1.pop();
if (!s1.empty()) {
front = s1.peek();
}
return temp;
}
// Get the front element.
public int peek() {
return front;
}
// Return whether the queue is empty.
public boolean empty() {
return s1.isEmpty();
}
}
class MyQueue2 {
private java.util.Stack<Integer> s1 = new java.util.Stack<>();
private java.util.Stack<Integer> s2 = new java.util.Stack<>();
private int front;
/** Initialize your data structure here. */
public MyQueue2() {
}
// Push element x to the back of queue.
public void push(int x) {
if (s1.empty()) {
front = x;
}
s1.push(x);
}
// Removes the element from in front of queue.
public int pop() {
if (s2.isEmpty()) {
while (!s1.isEmpty()) {
s2.push(s1.pop());
}
}
return s2.pop();
}
// Get the front element.
public int peek() {
if (!s2.isEmpty()) {
return s2.peek();
}
return front;
}
// Return whether the queue is empty.
public boolean empty() {
return s1.isEmpty() && s2.isEmpty();
}
}
/**
* Your MyQueue object will be instantiated and called as such: MyQueue obj =
* new MyQueue(); obj.push(x); int param_2 = obj.pop(); int param_3 =
* obj.peek(); boolean param_4 = obj.empty();
*/
LeetCode_232. Implement Queue using Stacks
原文:https://www.cnblogs.com/denggelin/p/11738358.html