题目链接:https://leetcode-cn.com/problems/sort-of-stacks-lcci/
题目如下:
class SortedStack {
public:
SortedStack() {
}
//单调栈(栈顶是最小):
//每次和栈顶元素比较,如果比栈顶元素小,则
//将栈顶元素放入临时的栈中,放入元素之后,再将临时栈中的元素放回
void push(int val) {
stack<int> tmp;
while(stk.size()!=0&&stk.top()<val){
tmp.push(stk.top());
stk.pop();
}
stk.push(val);
while(tmp.size()){
stk.push(tmp.top());
tmp.pop();
}
}
void pop() {
if(stk.size()) stk.pop();
}
int peek() {
if(stk.size()) return stk.top();
else return -1;
}
bool isEmpty() {
return stk.empty();
}
private:
stack<int> stk;
};
/**
* Your SortedStack object will be instantiated and called as such:
* SortedStack* obj = new SortedStack();
* obj->push(val);
* obj->pop();
* int param_3 = obj->peek();
* bool param_4 = obj->isEmpty();
*/