问题
把一个栈变成一个递增栈
例子
思路
- 方法1
辅助栈是递减栈
每次从栈中弹出数a,如果a<=辅助栈栈顶元素,直接把a放进辅助栈
否则,把辅助栈数中<=a的都弹出并放进栈,最后把a放进辅助栈
最后,辅助栈成了一个递减栈,依次弹出并放入栈,则栈就成了递增栈
代码
//方法1
public static void getSort(Stack<Integer> s) {
//递减栈
Stack<Integer> help = new Stack<>();
while(s.size()>0) {
int temp = s.pop();
while(help.size()>0 && temp>help.peek()) {
s.push(help.pop());
}
help.push(temp);
}
while(help.size()>0)
s.push(help.pop());
}
public static void main(String[] args) {
int[] arr = {3,5,1,4,2};
Stack<Integer> s = new Stack<>();
for(int n :arr) s.push(n);
getSort(s);
System.out.println(s);
}
//方法2