题解 | 包含min函数的栈
包含min函数的栈
https://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49
#include <stack>
class Solution {
public:
//用于栈的push与pop
stack<int> s1;
//用于存储最小min
stack<int> s2;
void push(int value) {
s1.push(value);
//空或者新元素较小,则入栈
if (s2.empty()||s2.top()>value) {
s2.push(value);
}else {
//重复加入栈顶 保证s2的栈顶上永远是最小数
s2.push(s2.top());
}
}
void pop() {
s1.pop();
//s2也正常删由于s2会跟1同样高度,要么上面数字跟1要么一样要么不在2里,同样高度是它原栈比他小的数,删掉重复保持一致即可
s2.pop();
}
int top() {
return s1.top();
}
int min() {
//s2上一直保持最小值
return s2.top();
}
};
查看17道真题和解析