栈元素的排序
来源:互联网 发布:淘宝和京东的采购模式 编辑:程序博客网 时间:2024/05/18 03:22
请编写一个程序,按升序对栈进行排序(即最大元素位于栈顶),要求最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中。
给定一个int[] numbers(C++中为vector<int>),其中第一个元素为栈顶,请返回排序后的栈。请注意这是一个栈,意味着排序过程中你只能访问到第一个元素。
测试样例:
[1,2,3,4,5]
返回:[5,4,3,2,1]class TwoStacks {public:vector<int> twoStacksSort(vector<int> numbers) {// write code herevector<int> temp;if (numbers.empty()){return temp;}// 只要原栈还有数据,就要循环到最后while (numbers.size()!=0) {if (temp.empty()) {temp.insert(temp.begin(), numbers[0]);// 栈底元素的加numbers.erase(numbers.begin());} else {if (numbers[0] >= temp[0]) {temp.insert(temp.begin(), numbers[0]);//temp.push_back(temp.begin());numbers.erase(numbers.begin());} else {int temp1 = numbers[0];numbers.erase(numbers.begin());while (!temp.empty() && temp[0] > temp1) {numbers.insert(numbers.begin(), temp[0]);temp.erase(temp.begin());}temp.insert(temp.begin(), temp1);}}}return temp;}};void main(){TwoStacks S;vector<int> mat1;vector<int> mat2;mat1.push_back(1); mat1.push_back(2) ; mat1.push_back(3);mat1.push_back(4);mat1.push_back(5); mat1.push_back(6); mat2=S.twoStacksSort(mat1);for ( int i = 0 ; i< mat2.size() ; i++){cout<< mat2[i]<<" ";}}
0 0
- 栈元素的排序
- 栈的排序,栈顶元素最大.
- 实现栈中元素的排序
- 元素的排序
- 对栈元素排序
- 栈中元素排序
- list的各种元素排序
- vector数组元素的排序
- 对一个数组元素排序,对应的数组元素排序
- 元素排序
- 从单链表中删除最大的元素,单链表元素排序
- 对ArrayList的自定义元素进行排序
- JavaScript:按字母排序列表的元素
- 去除数组的重复元素并排序
- ArrayList按照元素的特性排序
- ArrayList按照元素的特性进行排序
- 有重复元素的排序问题
- 删除排序数组中重复的元素
- /proc/cpuinfo
- Linux进程间通信之信号
- JAVA基础11--行为型模式(观察者模式2,备忘录模式)
- AFNetworking学习与使用(一)
- 黑马程序员——Java的基本操作
- 栈元素的排序
- Redis集群方案,Codis安装测试
- Spark编程注意事项
- dll 动态库文件的一些问题
- hdu4510
- 关于图片查看的小结
- Android中处理崩溃异常
- Java的JNI:使用Java调用C程序(一)
- iOS 万能跳转界面方法 (runtime实用篇一)