程序员面试金典题解 双栈排序
2016-07-10 16:04
381 查看
题目描述
请编写一个程序,按升序对栈进行排序(即最大元素位于栈顶),要求最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中。
给定一个int[] numbers(C++中为vector<int>),其中第一个元素为栈顶,请返回排序后的栈。请注意这是一个栈,意味着排序过程中你只能访问到第一个元素。
测试样例:
请编写一个程序,按升序对栈进行排序(即最大元素位于栈顶),要求最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中。
给定一个int[] numbers(C++中为vector<int>),其中第一个元素为栈顶,请返回排序后的栈。请注意这是一个栈,意味着排序过程中你只能访问到第一个元素。
测试样例:
[1,2,3,4,5] 返回:[5,4,3,2,1]
import java.util.*; public class TwoStacks { public ArrayList<Integer> twoStacksSort(int[] numbers) { Stack<Integer> left=new Stack(); ArrayList<Integer> right=new ArrayList(); for(int i=numbers.length-1;i>=0;i--){ left.push(numbers[i]); } while(!left.empty()){ int temp=left.pop(); while(!right.isEmpty()&&temp<right.get(0)){ left.push(right.remove(0)); } right.add(0,temp); } return right; } }
相关文章推荐
- leetcode【67】-Bulb Switcher
- 程序员面试金典题解 猫狗收容所
- 【搜商】程序员应该必备的10个搜索技巧 ,你知道几个?
- 剑指offer面试题7:用两个栈实现队列
- Android面试准备之集合
- 面试准备
- 文件编码方式的分析与理解
- 《剑指Offer》面试题55:字符流中第一个不重复的字符
- 华为机试题【12】-关灯泡
- 华为机试题【12】-关灯泡
- 面试题一帖汇总
- OSChina 周日乱弹 ——致程序员的老婆们
- 最厉害的面试技巧都有哪些?
- 苦逼程序员:半数加班(转)
- 2016腾讯IEG实习面试
- 成为Java顶尖程序员 ,看这11本书就够了
- 剑指offer面试题6:重建二叉树
- 面试题笔记
- 程序员旅游之吐糟途牛——第一天
- 华为机试题【11】-报数删除人