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;
    };
  • 相关阅读:
    evernote100个做笔记的好方法
    平衡二叉树的调整模版
    晨间日记的奇迹
    hdu 2952 Counting Sheep
    hdu 1535 Invitation Cards
    poj 3259 Wormholes(spfa)
    poj 2263 Heavy Cargo(floyd)
    poj 3268 Silver Cow Party(SPFA)
    hdu 1690 Bus System
    hdu 3631 Shortest Path(Floyd)
  • 原文地址:https://www.cnblogs.com/tianzeng/p/10182455.html
Copyright © 2011-2022 走看看