题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数
用一个栈data保存数据,用另外一个栈min保存依次入栈最小的数
则min依次入栈,
5
,
4
,
3
,no,no, no, no,
1(no代表此次不入栈)
每次入栈的时候,如果入栈的元素比min中的栈顶元素小或等于则入栈,否则不入栈。
class Solution {
public:
stack<int> data, mindata; //data为存储数据的栈,mindata为存储最小值的栈
void push(int value) {
if(mindata.empty())
mindata.push(value);
else{
int min = mindata.top();
//push时将栈顶值和value较小值入栈
min >= value ? mindata.push(value) : mindata.push(min);
}
data.push(value);
}
void pop() {
mindata.pop();
data.pop();
}
int top() {
return data.top();
}
int min() {
return mindata.top();
}
};