zoukankan      html  css  js  c++  java
  • 面试题12 包含 min 函数的栈 【栈】

    #include <iostream>
    #include <cstdio>
    #include <stack>
    #include <queue>
    #include <deque> // 支持下标访问
    #include <algorithm>
    
    using namespace std;
    template<typename T> class StackWithMin {
    public :
        StackWithMin() {}
        virtual ~StackWithMin() {}
        const size_t size() const;
        void pop();
        void push(const T& value);
        T top() const;
        T min();
    private :
        deque<T> m_data;
        deque<T> m_min;
    };
    template<typename T> const size_t StackWithMin<T>::size() const {
        return m_data.size();
    }
    template<typename T> void StackWithMin<T>::pop() {
        assert(!m_data.empty() && !m_min.empty());
        m_data.pop_front();
        m_min.pop_front();
    }
    template<typename T> void StackWithMin<T>::push(const T& value) {
        m_data.push_front(value);
        if(m_min.empty() || value < m_min[0]) {
            m_min.push_front(value);
        }
        else {
            m_min.push_front(m_min[0]);
        }
    }
    template<typename T> T StackWithMin<T>::top() const {
        assert(!m_data.empty() && !m_min.empty());
        return m_data[0];
    }
    template<typename T> T StackWithMin<T>::min() {
        assert(!m_data.empty() && !m_min.empty());
        return m_min[0];
    }
    int main() {
        return 0;
    }

  • 相关阅读:
    18寒假第一测
    P1932 A+B A-B A*B A/B A%B Problem
    POJ 2823 Sliding Window
    堆排序
    [LeetCode] Candy
    [LeetCode] Single Number II
    [LeetCode] Single Number
    [LeetCode] Binary Tree Postorder Traversal
    [LeetCode] Binary Tree Preorder Traversal
    [LeetCode] Insertion Sort List
  • 原文地址:https://www.cnblogs.com/robbychan/p/3787144.html
Copyright © 2011-2022 走看看