class MinStack {
private:
stack<int> stackA;
stack<int> stackB; //构建一个存储最小值的辅助栈
public:
/** initialize your data structure here. */
MinStack() {
stackB.push(INT_MAX); //先在辅助栈里存入一个非常大的值,确保栈A里的第一个数能存进去
}
void push(int x) {
stackA.push(x);
stackB.push(::min(stackB.top(),x));
//::min是全局函数,当有局部函数重名时,就用::声明
//min(stackB.top(),x) 比较当前插入的值和辅助栈栈顶元素的值谁小存入谁
}
void pop() {
stackA.pop();
stackB.pop();
//让辅助栈和栈同时进出,这样就能保证辅助栈的栈顶元素存的一直都是当前栈的最小值
}
int top() {
return stackA.top();
}
int min() {
return stackB.top();
}
};
剑指offer刷题—30 包含min函数的栈
于 2023-03-21 21:38:37 首次发布