//题目描述
//
//定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
#include<stack>
#include<iostream>
using namespace std;
// stk 保存依次进入栈的数据
// minstk 保存依次进入栈时当前的最小值的栈
class Solution {
public:
void push(int value) {
stk.push(value);
if(!minstk.empty()){
int tmp=minstk.top();
if(tmp>=value)minstk.push(value);
}else
minstk.push(value);
}
void pop() {
if(!stk.empty()){
int top=stk.top();
stk.pop();
if(!minstk.empty()){
if(top==minstk.top())minstk.pop();
}
}
}
int top() {
if(!stk.empty())return stk.top();
return -1;
}
int min() {
if(!minstk.empty())return minstk.top();
return -1;
}
private:
stack<int>stk;
stack<int>minstk;
};
int main(){
Solution test=Solution();
//["PSH3","MIN","PSH4","MIN","PSH2","MIN","PSH3","MIN","POP","MIN","POP","MIN","POP","MIN","PSH0","MIN"]
test.push(3);
cout<<test.min();
test.push(4);
cout<<test.min();
test.push(2);
cout<<test.min();
test.push(3);
cout<<test.min();
test.pop();
cout<<test.min();
test.pop();
cout<<test.min();
test.pop();
cout<<test.min();
test.push(0);
cout<<test.min();
system("pause");
return 0;
}
【剑指offer】4.3举例让抽象问题具体化——面试题21:包含min函数的栈
最新推荐文章于 2023-02-24 17:50:59 发布