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

    题目描述

    用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

    题目分析

    栈:后进先出(LIFO-last in first out)

    队列:先进先出(FIFO-first in first out)

    解题思路

    假设两个栈为栈A和栈B

    入栈时直接压入栈A

    出栈时,如果栈B为空,则把栈A中所有元素压入栈B,然后弹出栈B的栈顶元素

                  如果栈B不为空,则直接弹出栈B的栈顶元素

    最终代码

    所用时间和内存:18ms,9308k

    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(stack1.empty()&&stack2.empty()){
                throw new RuntimeException("Quene is empty");
            }
            if(stack2.empty()){
                while(!stack1.empty()){
                    stack2.push(stack1.pop());
                }
            }
            return stack2.pop();
        }
    }

    Tips:

    java中stack有的方法:

    • E push(E item)

      将item压入栈并返回item

    • E pop()

      弹出并返回栈顶的item。如果栈为空,请不要调用这个方法。

    • E peek()

      返回栈顶元素,但不弹出。如果栈为空,请不要调用这个方法。

  • 相关阅读:
    网络CCNA基础了解
    KVM 安装 VMware 虚拟机
    [转载]JS浏览器兼容性问题
    java中数组是不是对象?
    [转载]request.getServletPath()方法
    weblogic下更改jsp不生效的解决办法
    java之args[0]
    docker小demo
    eclipse优化
    [转载]oracle建表语句大全
  • 原文地址:https://www.cnblogs.com/mgblog/p/10967532.html
Copyright © 2011-2022 走看看