题目:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
用双栈来解决,第一个栈用作普通栈,存放用于出栈入栈的数据,以及执行top()操作,第二个栈用于存放当前最小值(栈顶).
class Solution {
public:
stack<int> smin;
stack<int> sdata;
void push(int value) {
sdata.push(value);
if (value < smin.top() || smin.empty())
smin.push(value);
else smin.push(smin.top());
}
void pop() {
smin.pop();
sdata.pop();
}
int top() {
return sdata.top();
}
int min() {
return smin.top();
}
};
没有进行足够的特殊情况判断,也就是边界条件没有严格写出来,在牛客网还是AC了。