包含min函数的栈

题目描述

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

定义两个栈,v1,minv;分别表示压入原始数据的栈和压入当前最小数据的栈。

(1)minv为空,直接把原始数据value入栈

(2)minv非空,若压入数据value比minv栈顶还要小,value入栈minv;否则minv继续栈顶元素。

这样就保证minv是原始数据的最小元素,并且两个栈的元素个数保持一致,其中,最小元素就是minv的栈顶元素。

class Solution {
public:
    stack<int> v1,minv;
    void push(int value) {
        v1.push(value);
        if(minv.empty())
        {
            minv.push(value);
        }
        else
        {
            if(minv.top()>value)
                minv.push(value);
            else 
                minv.push(minv.top());
        }
        
    }
    void pop() {
        if(!v1.empty())
        {
            v1.pop();
            minv.pop();
        }
    }
   
    int min() {
        if(!minv.empty())
            return minv.top();
        return 0;
    }
};

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页