zoukankan      html  css  js  c++  java
  • 155. Min Stack

    /*
     * 155. Min Stack
     * 12.10 by Mingyang
     * 自行设计Stack,这种类型的题目一定要两个Stack同步来解
     * 这个题目自己想的时候一开始写错了,以为这个stack每次弹出来的是由小到大的顺序,
     * 然后实际上发现才是还是按照stack的顺序弹出,只是每次需要随时保存最小的值
     * 这里面有个技巧,当minstack为空的时候,自然push进去了。但是如果里面有值
     * 需要把这个值和x比较,小的push进去,这样如果那个值更小,会被push进去两次
     * 这么做的目的就是pop的时候可以同时pop两个出来
     */
    class MinStack {
        private Stack<Integer> stack;
        private Stack<Integer> minStack;
        public MinStack(){
            stack=new Stack<Integer>();
            minStack=new Stack<Integer>();
        }
        public void push(int x) {
            stack.push(x);
            if (minStack.isEmpty()) {
                minStack.push(x);
            } else {
                minStack.push(Math.min(x, minStack.peek()));
            }//注意,每次push的时候两边同时都要push,这样的话后面pop的时候就可以直接两个一起pop了
        }
        public void pop() {
            minStack.pop();
            stack.pop();
        }
        public int getMin() {
            return minStack.peek();
        }  
        public int top(){
            return stack.peek();
        }
    }
  • 相关阅读:
    When You Get Troubles
    CentOS 6.8升级到7+
    Tomcat服务器搭建
    Percona Server 安装
    VirtualBox中如何使虚拟机能够上网?
    CentOS
    xen安装
    SSH免密码设置
    打造绿色版的RobotFramework
    零散知识记录-Jira的安装
  • 原文地址:https://www.cnblogs.com/zmyvszk/p/5555075.html
Copyright © 2011-2022 走看看