码迷,mamicode.com
首页 > 其他好文 > 详细

【leetcode】3 minstack

时间:2015-05-07 23:43:56      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:

构建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();    

} };

【leetcode】3 minstack

标签:

原文地址:http://www.cnblogs.com/wygyxrssxz/p/4486186.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!