标签:return header 入栈 二叉树 head solution 一个队列 题目 imp
时间限制:1秒
空间限制:32768K
本题知识点:队列
栈
题目描述:
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
import java.util.Stack;
public class Solution {
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
public void push(int node) {
}
public int pop() {
}
}
操作情况依次经历下述变化:
两栈都空
-> stack1不空 stack2空
-> stack1空 stack2不空
-> 两栈都不空
两栈都空
两栈都空 | stack1=[] | stack2=[] | 操作步骤 |
---|---|---|---|
入栈 {1, 2} | stack1=[2, 1] | stack2=[] | 2 * stack1.push |
出栈 | stack1=[] | stack2=[] | return null |
stack1不空 stack2空
1不空 2空 | stack1=[2, 1] | stack2=[] | 操作步骤 |
---|---|---|---|
入栈 {3, 4} | stack1=[4, 3, 2, 1] | stack2=[] | 2 * stack1.push |
出栈 | stack1=[] | stack2=[2, 3, 4] | 4 * stack1.pop 4 * stack2.push return stack2.pop |
stack1空 stack2不空
1空 2不空 | stack1=[] | stack2=[2, 3, 4] | 操作步骤 |
---|---|---|---|
入栈 {5, 6} | stack1=[6, 5] | stack2=[2, 3, 4] | 2 * stack1.push |
出栈 | stack1=[] | stack2=[3, 4] | return stack2.pop |
两栈都不空
两栈不空 | stack1=[6, 5] | stack2=[2, 3, 4] | 操作步骤 |
---|---|---|---|
入栈 {7, 8} | stack1=[8, 7, 6, 5] | stack2=[2, 3, 4] | 2 * stack1.push |
出栈 | stack1=[6, 5] | stack2=[3, 4] | return stack2.pop |
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() {
// 若 stack2 为空:将所有 stack1 元素入栈到 stack2
if(stack2.empty()){
while(!stack1.empty()){
stack2.push(stack1.pop());
}
}
return stack2.pop();
}
}
标签:return header 入栈 二叉树 head solution 一个队列 题目 imp
原文地址:https://www.cnblogs.com/jianminglin/p/11291789.html