zoukankan      html  css  js  c++  java
  • 剑指offer:包含min函数的栈

    题目描述:

    定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。

    解题思路:

    相当与在保留原栈的同时,去维护一个最小栈。利用一个辅助栈来完成。对于每个新输入的数,在压入原栈的同时,需要去判断是否为最小值,若为最小指,则压入辅助栈,否则将当前最小值压入辅助栈。这样就相当于两个栈的大小是相等的,每次做push和pop操作时,二者需要同步。最后的min函数只需要取辅助栈的top就可以。

    代码:

    class Solution {
    public:
        stack<int>cur, min_stack;
        void push(int value) {
            cur.push(value);
            if(min_stack.empty())
                min_stack.push(value);
            else
            {
                if(value < min_stack.top())
                    min_stack.push(value);
                else
                    min_stack.push(min_stack.top());
            }
        }
        void pop() {
            if(!cur.empty())
            {
                cur.pop();
                min_stack.pop();
            }
            
        }
        int top() {
            if(!cur.empty())
                return cur.top();
            return 0;
        }
        int min() {
            if(!min_stack.empty())
            {
                return min_stack.top();
            }
            return 0;
        }
    };
  • 相关阅读:
    java中锁的应用(ReentrantLock)
    java中锁的应用(synchronized)
    Redis + keepalived 主从设置与搭建
    Smokeping搭建
    Mysql5.7双主安装与使用
    软件测试作业3
    软件测试作业2
    github&文章
    PICT的安装和使用
    Junit的安装和使用
  • 原文地址:https://www.cnblogs.com/LJ-LJ/p/10599221.html
Copyright © 2011-2022 走看看