最小栈

Posted -citywall123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最小栈相关的知识,希望对你有一定的参考价值。

 

技术图片

 

 

当一个元素要入栈时,我们取当前辅助栈的栈顶存储的最小值,与当前元素比较得出最小值,将这个最小值插入辅助栈中(min_stack.push(min(x,min_stack.top()))

当一个元素要出栈时,我们把辅助栈的栈顶元素也一并弹出;

在任意一个时刻,栈内元素的最小值就存储在辅助栈的栈顶元素中。

 

class MinStack {
      stack<int> x_stack;
      stack<int> min_stack;
  public:
      MinStack() {
          min_stack.push(INT_MAX);
      }

      void push(int x) {
          x_stack.push(x);
          min_stack.push(min(min_stack.top(), x));
      }

      void pop() {
          x_stack.pop();
          min_stack.pop();
      }

      int top() {
          return x_stack.top();
      }

      int getMin() {
          return min_stack.top();
      }
  };

 

以上是关于最小栈的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer--30 最小栈

2021/5/16 刷题笔记最小栈与辅助栈思想

Leetcode155. 最小栈(辅助栈)

LeetCode最小栈问题的最优解法+代码实现

LeetCode最小栈问题的最优解法+代码实现

155.最小栈