30剑指OFFER之包含min函数的栈

参考资料:

自己思路

思路:

栈的底层容器可以是vector

关键词:

栈的底层容器可以是vector

自己的解法:
class Solution {
public:
    void push(int value) {
        result.push_back(value);
    }
    void pop() {
        result.pop_back();
    }
    int top() {
        return result[result.size()-1];
    }
    int min() {
        vector<int> tmp;
        tmp = result;
        sort(tmp.begin(),tmp.end());
        return tmp[0];
    }
    
    vector<int> result;
};
//思路:干啥呢?
//栈的底层容器可以是vector
//
标准答案:
class Solution {
public:
    
    //本题的目标就是给栈增加一个新功能
    //新建两个栈,1个是数据栈,一个是辅助栈
    stack<int> datastack;
    stack<int> helpstack;
    
    int tmp=0;
    void push(int value) {
        //如果这个值比之前的小,压入数据栈和辅助栈,刚开始栈是空的
        if(value<tmp||datastack.empty())
        {
            tmp = value;
            datastack.push(value);
            helpstack.push(value);
        }
        else
        {
            //如果这个值比较大的话,压入数据栈,辅助栈压入的还是之前的
            datastack.push(value);
            helpstack.push(tmp);
        }
    }
    void pop() {
        datastack.pop();
        helpstack.pop();
    }
    int top() {
        //datastack栈顶保存的就是最小值
        int num = datastack.top();
        return num;
    }
    int min() {
        //helpstack栈顶保存的就是最小值
        int num = helpstack.top();
        return num;
        
    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。