程序员面试指南之用一个栈实现另一个栈的排序

来源:互联网 发布:校园网络设计思路 编辑:程序博客网 时间:2024/04/24 15:49

题目描述:

这里写图片描述

解题思路:

  假设要排序的栈是sortStack,我们定义一个helpStack。如果sortStack不为空,就pop出栈顶元素value并与helpStack的栈顶元素比较,当helpStack不为空且value比较大时就将helpStack中的元素弹出并压入sortStack中,直到value比较小或相等时才将sortStack中的元素push进helpStack。因为栈的特性是先进后出的,循环此过程,那么helpStack中的元素从栈顶到栈底就是从大到小排序的,这时再将helpStack中的元素push进sortStack就行了。

题解:

public void sortStackByStack(Stack<Integer> sortStack){        Stack<Integer> helpStack = new Stack<>();        int value = sortStack.pop();        while(! sortStack.isEmpty()){            while(! helpStack.isEmpty() && value > helpStack.peek()){                sortStack.push(helpStack.pop());            }            helpStack.push(value);        }        while(! helpStack.isEmpty()){            sortStack.push(helpStack.pop());        }    }
0 0
原创粉丝点击