用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
百度百科:
堆(Heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵完全二叉树的数组对象。 栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
有两个栈stack1
,stack2
; 如果有新的数据进入,那么我们可以直接push到stack1; 如果需要取出数据,那么我们优先取出stack2
的数据,如果stack2
里面数据是空的,那么我们需要把所有的stack1
的数据倒入stack2
。再从stack2
取数据。
例如: (1). push 1--> push 2
(2).pop 1
(3). push 3--> push 4
(4).pop 2
import java.util.Stack;
public class Solution {
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
public void push(int node) {
stack1.push(node);
}
public int pop() {
if(!stack2.isEmpty()){
return stack2.pop();
}else{
while(!stack1.isEmpty()){
stack2.push(stack1.pop());
}
}
return stack2.pop();
}
}
主要思路是如何将进入顺序和弹出的顺序做好装换。 - END -