给定一个乱序的栈,设计算法将其升序排列。
ps. 允许额外使用一个栈来辅助操作。
输入 [4, 2, 1, 3]
输出 [1, 2, 3, 4]
思路
其实就是单调栈的问题!
维护辅助栈为单调递增栈。
如果将1移至辅助栈就破坏了辅助栈升序排列的约定,因此不能直接将1挪到辅助栈。
而应该如下图所示,将1存到临时变量中。
然后将辅助栈的元素弹到原始栈中,直到1可以挪到辅助栈为止。
stack<int> stackSort(stack<int> &stk)
{
stack<int> tmp;
while (!stk.empty()) {
int peak = stk.top();
stk.pop();
while ()
{
int t = tmp.top();
tmp.pop();
stk.push(t);
]
tmp.push(peak);
}
return tmp;
}