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

Posted ruoh3kou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[剑指offer] 20. 包含min函数的栈相关的知识,希望对你有一定的参考价值。

题目描述

定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的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函数的栈的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer-包含min函数的栈20

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

剑指Offer 20. 包含min函数的栈 (栈)

剑指offer系列——20.包含min函数的栈

剑指Offer30包含min函数的栈

《剑指Offer——面试题30. 包含min函数的栈》代码