• 【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();    

    } };

  • 相关阅读:
    Kafka 配置
    Zookeeper的Watcher机制
    Ubuntu18.04下希捷移动硬盘Seagate Backup Plus读写慢
    Spring Boot 使用Jar打包发布, 并使用 Embedded Jetty/Tomcat 容器
    再谈C#委托与事件
    C#委托和事件例析
    PHP:session无法使用
    C++:实现类似MFC的IsKindOf功能
    C++:复制构造函数
    C++:运算符重载
  • 原文地址:https://www.cnblogs.com/wygyxrssxz/p/4486186.html
Copyright © 2020-2023  润新知