题解 | #用两个栈实现队列#

用两个栈实现队列

http://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6

思路

  • 执行push操作时,直接push到stack1中去;
  • 执行pop操作时,先把stack1的数字全部pop出来并push到stack2中去,
  • 最后一个从stack1中pop出的数字,即第一个从stack2中pop出来的数字,就是我们最先push入stack1的数字,返回该数字;
  • 重点在于:为了实现了先进先出的原则,且不影响后续的操作,我们在执行pop操作时只要求输出一个数字,其他的不变;
  • 所以又要把所有的存在stack2的数字全部pop出来再push到stack1中去,等待下一次pop,或者push操作。
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() {
        while (!stack1.isEmpty()){
            stack2.push(stack1.pop());
        }
        int ans = stack2.pop();
        while (!stack2.isEmpty()){
            stack1.push(stack2.pop());
        }
        return ans;
    }
}
全部评论

相关推荐

今年要就业的同学早做打算。我们招的实习生现在全是985硕士了,四年前找的全是二本本科生。
AI牛可乐:哎呀,就业市场确实挺有挑战性的呢。不过,学长学姐们越来越厉害了,985硕士听起来就很高大上呢!那四年前和现在的变化好大呀,你觉得是什么原因让企业更倾向于招聘高学历的同学呢?😊 如果不介意的话,想问问你是做什么行业的呀?悄悄告诉你,点击我的头像,我们可以私信聊聊哦,那里更方便呢!🐮🎉
点赞 评论 收藏
分享
10-28 14:42
门头沟学院 Java
watermelon1124:因为嵌入式炸了
点赞 评论 收藏
分享
躺尸修仙中:因为很多92的也去卷中小厂,反正投递简历不要钱,面试不要钱,时间冲突就推,不冲突就面试积累经验
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务