class MyQueue {
//利用两个栈储存元素 , 第一个栈存储元素后再将元素拿出来存到另一个栈 存到第一个栈元素顺序被反转 存到另一个栈元素再次反转
//此时存储顺序就和队列相同
private Stack<Integer> one;
private Stack<Integer> two;
public MyQueue() {
one = new Stack<>();
two = new Stack<>();
}
public void push(int x) { //将x放入第一个栈中
one.push(x);
}
public int pop() {
InAll(); //调用InAll 将完整的将第一个栈中元素放入第二个栈中
return two.pop();//实现pop命令
}
public int peek() {
InAll();//调用InAll 将完整的将第一个栈中元素放入第二个栈中
return two.peek();//实现peek命令
}
public boolean empty() {
return one.isEmpty() && two.isEmpty();
}
private void InAll(){
while(two.isEmpty()){
while(!one.isEmpty()){
two.push(one.pop());
}
}
}
}
/**
* 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();
*/
力扣232 用栈实现队列
最新推荐文章于 2024-11-17 06:32:34 发布