• 牛客网 剑指offer JZ5 用两个栈实现队列


    描述

    用两个栈来实现一个队列,分别完成在队列尾部插入整数(push)和在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。
     
    示例:
    输入:
    ["PSH1","PSH2","POP","POP"]
    返回:
    1,2
    解析:
    "PSH1":代表将1插入队列尾部
    "PSH2":代表将2插入队列尾部
    "POP“:代表删除一个元素,先进先出=>返回1
    "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() {
            while (!stack2.isEmpty())
                return stack2.pop();
            while (!stack1.isEmpty())
                stack2.push(stack1.pop());
                return stack2.pop();
        }
    }

    插入的时候很简单

    弹出的时候有点复杂:

    先弹stack2,

    弹完以后,把stack1的全部押到stack2,然后弹出stack2第一个

  • 相关阅读:
    冲刺计划第五天
    冲刺计划第四天
    冲刺计划第三天
    冲刺计划第二天
    冲刺计划第一天
    本周总结(9)
    统计文章中得单词百分比、以及字母百分比
    梦断代码阅读笔记03
    maven仓库、jar包兼容问题
    SpringMVC异常映射
  • 原文地址:https://www.cnblogs.com/upstart/p/15027986.html
Copyright © 2020-2023  润新知