力扣 面试题 03.05. 栈排序
分析:这道题并不难,用两个栈,一个保存数据,另一个辅助存储,考虑到题目中要求最多只能使用临时栈,所以我在插入中使用了临时的栈,没有使用成员变量栈。
代码:
class SortedStack {
public:
SortedStack() {
// 清空栈
while(!st.empty()){
st.pop();
}
}
void push(int val) {
// 适合存放的位置查找
stack<int> tmp;
while(!st.empty() && val > st.top()){
tmp.push(st.top());
st.pop();
}
// 将移动的数据放回去
st.push(val);
while(!tmp.empty()){
st.push(tmp.top());
tmp.pop();
}
}
void pop() {
// 添加一个if可以提高稳定性,面试中是有必要的,看你细不细心
if(!st.empty())
st.pop();
}
int peek() {
// 同上
if(!st.empty())
return st.top();
else
return -1;
}
bool isEmpty() {
return st.empty();
}
private:
stack<int> st;
};