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

  • 相关阅读:
    .net反编译原理
    科学使用Log4View2
    头条一面竟然问我Maven?
    SpringCloud Netflix(一) :微服务架构
    Linux环境安装Docker
    Quartz定时任务
    Jedis连接外部Redis
    宝塔phpmyadmin打不开的可能问题及解决方法
    文件上传 Window & Linux
    SpringBoot登录判断
  • 原文地址:https://www.cnblogs.com/robbychan/p/3787144.html
Copyright © 2011-2022 走看看