zoukankan      html  css  js  c++  java
  • 剑指offer:JZ9 用两个栈实现队列

    JZ9 用两个栈实现队列

    描述

    用两个栈来实现一个队列,使用n个元素来完成 n 次在队列尾部插入整数(push)和n次在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。

    分析

    使用两个栈来实现队列,首先我们要记住队列和栈的性质

    1.队列

    队列的性质是先进先出用图表示就是

    2.栈

    栈的性质是后进先出用图表示就是

    3.解题

    题目中说的是用两个栈来实现队列的pop和push,首先就能想到,用一个栈来存储push进来的所有元素,而在pop中首先因为栈是最先进来的元素才会pop出去,所以开始把保存元素的栈进行循环pop,pop出的元素保存在另外一共空栈上,直到第一个栈剩下栈底元素,这个就是我们需要pop出的结果,使用变量记录结果之后,清空第一个栈,使用第二个栈pop到空,元素依次push如第一个栈,保存数据,

    push

    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() {
            int result;
            while (stack1.size() != 1) {
                stack2.push(stack1.pop());
            }
    
            result = stack1.pop();
    
            while (stack2.size() != 0) {
                stack1.push(stack2.pop());
            }
    
            return result;
        }
    }
    
  • 相关阅读:
    css优化总结
    几种常用的图片格式
    css布局总结
    第四章复习题
    4.9,4.10
    4.8
    4.7指针
    libffi
    代理模式
    Redis 汇总
  • 原文地址:https://www.cnblogs.com/bearcanlight/p/15434675.html
Copyright © 2011-2022 走看看