zoukankan      html  css  js  c++  java
  • 剑指30 包含min函数的栈

    定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。

    示例:

    MinStack minStack = new MinStack();
    minStack.push(-2);
    minStack.push(0);
    minStack.push(-3);
    minStack.min(); --> 返回 -3.
    minStack.pop();
    minStack.top(); --> 返回 0.
    minStack.min(); --> 返回 -2.
     

    提示:

    各函数的调用总次数不超过 20000 次
     

    不能直接用一个int型保存最小值,因为当最小值被弹出后,我们就不能在O(1)内获取新的最小值了。

    使用2个栈,一个记录数据,一个每次都压入当前栈的最小值,等于说记录了栈压入了这些数据时的最小值。

     1 class MinStack {
     2 public:
     3     stack<int> data;
     4     stack<int> mins;
     5     /** initialize your data structure here. */
     6     MinStack() {
     7         cout<<"MinStack is created."<<endl;
     8     }
     9     
    10     void push(int x) {
    11         data.push(x);
    12         if(mins.empty() || x<mins.top())
    13             mins.push(x);
    14         else
    15             mins.push(mins.top());
    16         return ;
    17     }
    18     
    19     void pop() {
    20         data.pop();
    21         mins.pop();
    22         return ;
    23     }
    24     
    25     int top() {
    26         return data.top();
    27     }
    28     
    29     int min() {
    30         return mins.top();
    31     }
    32 };
    33 
    34 /**
    35  * Your MinStack object will be instantiated and called as such:
    36  * MinStack* obj = new MinStack();
    37  * obj->push(x);
    38  * obj->pop();
    39  * int param_3 = obj->top();
    40  * int param_4 = obj->min();
    41  */
  • 相关阅读:
    python Database Poll for SQL SERVER
    SQLAlchemy表操作和增删改查
    flask动态url规则
    flask配置管理
    一个Flask运行分析
    Function Set in OPEN CASCADE
    Happy New Year 2016
    Apply Newton Method to Find Extrema in OPEN CASCADE
    OPEN CASCADE Multiple Variable Function
    OPEN CASCADE Gauss Least Square
  • 原文地址:https://www.cnblogs.com/rookiez/p/13233837.html
Copyright © 2011-2022 走看看