首页 > 编程语言 > 详细

面试题 03.05. 栈排序

时间:2020-05-10 00:53:43      阅读:54      评论:0      收藏:0      [点我收藏+]

题目:

技术分享图片

 

 

解答:

利用两个栈s1,s2,其中s1存放排序数据,
当执行push()时,若s1.top()<val,将所有小于val的元素放入s2,再将val压入s1中,最后将s2中的元素放入s1中,实现s1的排序push。

 1 class SortedStack {
 2 public:
 3     stack<int>s1;
 4     stack<int>s2;
 5     SortedStack() 
 6     {
 7 
 8     }
 9     
10     void push(int val) 
11     {
12         while(!s1.empty()&&s1.top()<val)
13         {
14             s2.push(s1.top());
15             s1.pop();
16         }
17         s1.push(val);
18         while(!s2.empty())
19         {
20             s1.push(s2.top());
21             s2.pop();
22         }
23     }
24     
25     void pop() 
26     {
27         if(!s1.empty())
28         {
29             s1.pop();
30         }
31     }
32     
33     int peek() 
34     {
35       if(!s1.empty())
36       {
37             return s1.top();
38         }
39         return -1;
40     }
41     
42     bool isEmpty() 
43     {
44         return s1.empty();
45     }
46 };
47 
48 /**
49  * Your SortedStack object will be instantiated and called as such:
50  * SortedStack* obj = new SortedStack();
51  * obj->push(val);
52  * obj->pop();
53  * int param_3 = obj->peek();
54  * bool param_4 = obj->isEmpty();
55  */

 

面试题 03.05. 栈排序

原文:https://www.cnblogs.com/ocpc/p/12861101.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!