zoukankan      html  css  js  c++  java
  • 【leetcode】3 minstack

    构建MinStack,实现一系列操作,包括push,pop,top,minstack(返回栈中最小元素)

    思路:利用原始栈,不过这里需要两个栈,一个栈mystack用于存储元素,另一个栈otherstack元素由小到大排列

    关键:mystack进行push(x)时,判断x与mystack的top()元素大小,始终将小的元素如栈minstack,这样mystack的top()始终是最小的

    mystack的pop操作也是类似,当mystack与otherstack的top元素相同时,两个元素同时删除,否则只删除mystack的top元素

    class MinStack { public:

        stack<int> mystack;     stack<int> minstack;

        void push(int x) {        

        mystack.push(x);        

        if(minstack.empty()||x<=minstack.top())            

          minstack.push(x);     }

        void pop() {        

         if(!mystack.empty()){            

           if(mystack.top()==minstack.top())                

            minstack.pop();            

            mystack.pop();        

            }            

           }

        int top() {        

        return mystack.top();     }

        int getMin() {       

        return minstack.top();    

    } };

  • 相关阅读:
    Grove.net实践ORM学习笔记
    COM+的事务
    Delphi中MIDAS线程模型
    Delphi中封装ADO之我重学习记录。。。
    100 多个JaveScript 常用函数
    javascript 事件
    js 收藏
    js 常用函数
    表单11种Input的高级用法
    UltraEdit 使用技巧
  • 原文地址:https://www.cnblogs.com/wygyxrssxz/p/4486186.html
Copyright © 2011-2022 走看看