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

[剑指offer] 20. 包含min函数的栈

时间:2018-12-02 22:37:45      阅读:257      评论:0      收藏:0      [点我收藏+]

标签:pre   public   包含min函数的栈   return   pop   数据结构   情况   top   用两个   

题目描述

定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。

利用两个栈,一个栈来正常保存所有元素,另一个栈作为辅助。仅在以下情况使用:
push: 当辅助栈为空,或者辅助栈顶元素大于入栈元素时,辅助栈也push(value)
pop: 当辅助栈顶元素等于主栈顶元素时,辅助栈也pop()
min: 返回辅助栈栈顶元素
class Solution
{
public:
  stack<int> sta1;
  stack<int> sta2;
  void push(int value)
  {
    sta1.push(value);
    if (sta2.empty() || sta2.top() > value)
      sta2.push(value);
  }
  void pop()
  {
    if (sta2.top() == sta1.top())
      sta2.pop();
    sta1.pop();
  }
  int top()
  {
    return sta1.top();
  }
  int min()
  {
    return sta2.top();
  }
};

 

[剑指offer] 20. 包含min函数的栈

标签:pre   public   包含min函数的栈   return   pop   数据结构   情况   top   用两个   

原文地址:https://www.cnblogs.com/ruoh3kou/p/10055309.html

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