您的位置:首页 > Web前端

剑指offer-包含min函数的栈

2016-10-30 23:57 302 查看
一、问题描述

二、思路

两个栈,一个当前栈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();
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++