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;
    }

  • 相关阅读:
    507. Perfect Number
    Dos与Linux的断行字符
    724. Find Pivot Index
    110. Balanced Binary Tree
    掌握numpy(三)
    掌握numpy(二)
    掌握numpy(一)
    203. Remove Linked List Elements
    25个Java机器学习工具和库
    贝叶斯学习--极大后验概率假设和极大似然假设
  • 原文地址:https://www.cnblogs.com/robbychan/p/3787144.html
Copyright © 2011-2022 走看看