zoukankan      html  css  js  c++  java
  • LeetCode OJ:Min Stack(最小栈问题)

    Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.

    • push(x) -- Push element x onto stack.
    • pop() -- Removes the element on top of the stack.
    • top() -- Get the top element.
    • getMin() -- Retrieve the minimum element in the stack.

    设计一个最小栈,使得返回栈中的最小数的这个操作的时间复杂度为常数,用双栈实现,一个栈作为最小数的保存栈,代码如下:

     1 class MinStack {
     2 public:
     3     void push(int x) 
     4     {
     5         s.push(x);
     6         if(sMin.empty() || x <= sMin.top())
     7             sMin.push(x);
     8     }
     9 
    10     void pop() 
    11     {
    12         if(s.top() == sMin.top()){
    13             sMin.pop();
    14         }
    15         s.pop();
    16     }
    17 
    18     int top() 
    19     {
    20         return s.top();
    21     }
    22 
    23     int getMin() 
    24     {
    25         return sMin.top();
    26     }
    27 private:
    28     stack<int> s;
    29     stack<int> sMin;
    30 };
  • 相关阅读:
    Integer to English Words
    Word Ladder II
    Word Ladder
    Distinct Subsequences
    Interleaving String
    Scramble String
    【转】ROC和AUC介绍以及如何计算AUC
    Minimum Size Subarray Sum
    Minimum Window Substring
    Edit Distance
  • 原文地址:https://www.cnblogs.com/-wang-cheng/p/5014376.html
Copyright © 2011-2022 走看看