美文网首页
20-包含min函数的栈

20-包含min函数的栈

作者: 马甲要掉了 | 来源:发表于2020-05-08 22:22 被阅读0次

    题目描述

    定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
    注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。

    分析

    增加一个辅助栈,每次压入数据栈时,把当前栈里面最小的值压入辅助栈当中。这样辅助栈的栈顶数据一直是数据栈中最小的值。

    比如,data中依次入栈, 5, 4, 3, 8, 10, 11, 12, 1
    则min依次入栈, 5, 4, 3, 3, 3, 3, 3, 1

    代码

    let stack = [];
    let minStack = [];
    let tmp = null;
    function push(node)
    {
        // write code here
        if(tmp!=null){
            if(tmp>node){
                tmp = node;
            }
            stack.push(node);
            minStack.push(tmp);
        }else{
            tmp = node;
            stack.push(node);
            minStack.push(node);
        }
    }
    function pop() {
      stack.pop();
      minStack.pop();
    }
    function top() {
      return stack[stack.length - 1];
    }
    function min() {
      return minStack[minStack.length - 1];
    }
    

    相关文章

      网友评论

          本文标题:20-包含min函数的栈

          本文链接:https://www.haomeiwen.com/subject/nyhcnhtx.html