剑指offer-包含min函数的栈

来源:互联网 发布:装修网络平台有哪些 编辑:程序博客网 时间:2024/06/05 02:07

一、问题描述

二、思路

两个栈,一个当前栈data,一个辅助栈m_min,辅助栈用来存储当前的最小值,如果出栈,辅助栈也出栈,栈顶元素始终是当前的最小值。

在入栈时,如果辅助栈为空或者当前值小于辅助栈栈顶元素,则将当前值加入辅助栈;否则将辅助栈的栈顶元素加入辅助栈,表明此次有大于min栈顶数字入栈。以此保证在其中一个最小值出栈时,辅助栈也出栈时,辅助栈还能有一个最小值。

三、代码

class Solution {    public:    stack<int> data;    stack<int> m_min;    void push(int value) {        data.push(value);        if(m_min.size() == 0 || value < m_min.top())            m_min.push(value);        else            m_min.push(m_min.top());    }    void pop() {        data.pop();        m_min.pop();    }    int top() {           return data.top();    }    int min() {        return m_min.top();        }};

0 0
原创粉丝点击