您的位置:首页 > 其它

【leetcode】155 - Min Stack

2015-08-08 20:14 295 查看
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.

push(x) -- Push element x onto stack.

pop() -- Removes the element on top of the stack.

top() -- Get the top element.

getMin() -- Retrieve the minimum element in the stack.

Solution: 若只维护一个栈stk,在每次getMin的时候检索stk需要两倍的临时空间,倒两次,故用两个栈,一个stk,一个min

class MinStack {
public:
void push(int x) {
stk.push(x);
if(min.empty()||x<=min.top())min.push(x);       //if的两个判断条件顺序不能替换,否则stk添加第一个元素后getMin出错
}
void pop() {
if(stk.top()==min.top()){
stk.pop();
min.pop();
}else
stk.pop();
}
int top() {
return stk.top();
}
int getMin() {
return min.top();
}
private:
stack<int> stk;
stack<int> min;
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: