码迷,mamicode.com
首页 > 其他好文 > 详细

剑指Offer——包含min函数的栈

时间:2017-10-29 12:43:36      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:pop   code   offer   class   return   自定义   题目   包含min函数的栈   public   

题目描述:

定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。


分析:

 这题讲究效率,如果出栈一个一个的找,时间效率低下。

 所以我们用空间换时间,定义一个辅助栈,存储当前的最小值。

 入栈时,如果值是当前栈的最小值,则把值一并入辅助栈,不然只需要入主栈即可。

 出栈时,如果当前栈的最小值要出栈了,那么主栈和辅助栈一并出栈。

 辅助栈的栈顶元素一直都是当前栈的最小值。


代码:

 1 struct Stack {  // 自定义栈
 2     stack<int> myStack; // 主栈
 3     stack<int> myMin;   // 辅助栈,存最小值的栈
 4 };
 5 class Solution {
 6 public:
 7     Stack s;
 8     void push(int value) {  // 入栈
 9         s.myStack.push(value);  // 值入主栈
10         if(s.myMin.empty())
11             s.myMin.push(value);
12         if(value <= s.myMin.top())  // 最小值入辅助栈
13             s.myMin.push(value);
14     }
15     void pop() {    // 如果主栈栈顶是最小值,主栈和辅助栈都出栈
16         if(s.myStack.top() == s.myMin.top())
17             s.myMin.pop();
18         s.myStack.pop();
19     }
20     int top() {
21         return s.myStack.top();
22     }
23     int min() {
24         return s.myMin.top();
25     }
26 };

 

剑指Offer——包含min函数的栈

标签:pop   code   offer   class   return   自定义   题目   包含min函数的栈   public   

原文地址:http://www.cnblogs.com/jacen789/p/7747071.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!