利用最小栈实现栈存取数据时间复杂度在O(1)

#include <iostream>
#include <string>

using namespace std;

template<typename T> 
class StackWithMin {
    stack data;
    stack minStack;
    void push(const T& val) {
        data.push(val);
        if (minStack.size() == 0 || val < minStack.top()) {
            minStack.push(val);
        }
        else {
            minStack.push(minStack.top());
        }
    }
    void pop() {
        if (data.size() == 0) {
            return;
        }
        data.pop();
        minStack.pop();
    }

    T& min() {
        if (minStack.size() == 0) {
            return;
        }
        return minStack.top();
    }
};
原文地址:https://www.cnblogs.com/dongma/p/13921793.html