zoukankan      html  css  js  c++  java
  • 包含min函数的栈

    题目

    定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数

    思路

    不可以用个中间变量来存放最小值,这种在对于如栈时最小值的更新是可以起到作用的,但是出栈是若果包含该最小值的变量弹出了,最小值就无法实现更新了,所以用一个辅助栈来实现最小值的更新

    辅助栈(m_min)工作原理:

      入栈

    1. 数据进去数据栈(m_data)
    2. 当辅助栈为空时或要入栈的元素小于辅助栈的栈顶元素,进入辅助栈
    3. 当它不为空时,把辅助栈的栈顶元素在进行一次入栈操作

      出栈

    1. 数据栈和辅助栈同时弹出栈顶元素

    min函数只需返回辅助栈的栈顶元素

    class Solution {
    public:
        void push(int value) {
            data.push(value);
            if(help.empty()||help.top()>=value)
                help.push(value);
            else
                help.push(help.top());
            return ;
        }
        void pop() {
           // assert(data.size()>0&&help.size()>0)
            data.pop();
            help.pop();
        }
        int top() {
            int val=data.top();
            data.pop();
            help.pop();
            return val;
        }
        int min() {
            return help.top();
        }
    private:
        stack<int> data;
        stack<int> help;
    };
  • 相关阅读:
    iris中间件
    go并发设计模式 --资源生成器模式
    Navicate
    golang sftp传输文件
    升级python
    在centos上面开机自启动某个程序
    文件MD5
    python模块之logging
    python之八大排序方法
    python生成器
  • 原文地址:https://www.cnblogs.com/tianzeng/p/10182455.html
Copyright © 2011-2022 走看看