• IT公司100题-2-设计带min函数的stack


    问题描述:
    定义栈的数据结构,要求添加一个min 函数,能够得到栈的最小元素。
    要求函数min、push 以及pop 的时间复杂度都是O(1)。
     
    双倍空间实现:
    保存2个栈,分别是元素和当前最小值。
     
    压缩空间实现:

     1 // 2.cc
     2 #include <iostream>
     3 #include <stack>
     4 using namespace std;
     5 
     6 template <typename T> class MinStack {
     7 private:
     8       stack<T> stacks, mins;
     9 
    10 public:
    11       MinStack() {}
    12       ~MinStack() {}
    13 
    14       void push(const T & x) {
    15             stacks.push(x);
    16             if (mins.empty() || x <= mins.top())
    17                   mins.push(x);
    18       }
    19 
    20       void pop() {
    21             T x = stacks.top();
    22             stacks.pop();
    23             if (x == mins.top()) mins.pop();
    24             return;
    25       }
    26 
    27       T top() const{
    28             return stacks.top();
    29       }
    30 
    31       T get_min() {
    32             return mins.top();
    33       }
    34 };
    35 
    36 int main() {
    37       MinStack<int> s;
    38       s.push(6);
    39       s.push(7);
    40       s.push(5);
    41       s.push(9);
    42       s.push(3);
    43       cout << s.get_min() << endl;
    44       s.pop();
    45       s.pop();
    46       s.pop();
    47       cout << s.get_min() << endl;
    48       return 0;
    49 }
  • 相关阅读:
    python super()函数
    java中的方法
    python的5大数据类型操作之列表篇
    java流程控制
    eval函数 exec函数 compile函数之间的应用
    基础语法
    java中对字符串的操作
    iOS 简单的文件写入
    iOS弹出窗口
    iOS block传值和属性传值
  • 原文地址:https://www.cnblogs.com/dracohan/p/3871612.html
Copyright © 2020-2023  润新知