构建MinStack,实现一系列操作,包括push,pop,top,minstack(返回栈中最小元素)
思路:利用原始栈,不过这里需要两个栈,一个栈mystack用于存储元素,另一个栈otherstack元素由小到大排列
关键:mystack进行push(x)时,判断x与mystack的top()元素大小,始终将小的元素如栈minstack,这样mystack的top()始终是最小的
mystack的pop操作也是类似,当mystack与otherstack的top元素相同时,两个元素同时删除,否则只删除mystack的top元素
class MinStack { public:
stack<int> mystack; stack<int> minstack;
void push(int x) {
mystack.push(x);
if(minstack.empty()||x<=minstack.top())
minstack.push(x); }
void pop() {
if(!mystack.empty()){
if(mystack.top()==minstack.top())
minstack.pop();
mystack.pop();
}
}
int top() {
return mystack.top(); }
int getMin() {
return minstack.top();
} };
时间: 2024-10-11 01:17:36