zoukankan      html  css  js  c++  java
  • 包含min函数的栈

    题目:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。

    思路:维护两个栈,一个每次添加的所有的数,另一个添加每次最小值(当前值比栈顶小则添加,都否添加当前栈顶),pop时两个栈都要出

     Stack<Integer> mData=new Stack<Integer>();
        Stack<Integer> mMin=new Stack<Integer>();
        //java中的peek()和c++中的top()只返回头,不移除,pop要移除
        public void push(int node) {
            if(mData.empty()){
                mMin.push(node);
            }
            
            if(node<mMin.peek()){
                mMin.push(node);
            }else{
                
                mMin.push(mMin.peek());
            }
            mData.push(node);
        }
        
        public void pop() {
            if(mData.size()>0&&mMin.size()>0){
                mData.pop();
                   mMin.pop();
            }
         }
            
        
        public int top() {
            
            return (int)mData.peek();
        }
        
        public int min() {
            if(mMin.empty()){
                return 0;
            }
            return (int)mMin.peek();
        }
  • 相关阅读:
    wc
    1.11考试
    diff
    C++11新利器
    vimdiff
    [学习笔记]多项式
    rev
    [AH2017/HNOI2017]礼物
    tr
    bzoj2555: SubString
  • 原文地址:https://www.cnblogs.com/team42/p/6682083.html
Copyright © 2011-2022 走看看