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

    题目地址:包含min函数的栈

    题目描述                                   

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

    解法分析                                   

    一般来说返回最小值需要遍历整个栈,时间复杂度为O(n),不满足题目要求的O(1),因此我们需要考虑使用其他方法,加个辅助栈用于存放最小元素,每次有元素进栈就与辅助栈元素作对比。

    代码                                         

     1 var minStack = [];
     2 var dataStack = [];
     3 function push(node)
     4 {
     5     // write code here
     6     dataStack.push(node);
     7     if(minStack.length == 0 || node < minStack[minStack.length-1]){
     8         minStack.push(node);
     9     }else{
    10         minStack.push(minStack[minStack.length-1]);
    11     }
    12 }
    13 function pop()
    14 {
    15     // write code here
    16     if(minStack.length > 0 && dataStack.length >0){
    17         minStack.pop();
    18         dataStack.pop();
    19     }
    20     
    21 }
    22 function top()
    23 {
    24     // write code here
    25     if(dataStack.length > 0) return dataStack[dataStack.length-1];
    26 }
    27 function min()
    28 {
    29     // write code here
    30     if(dataStack.length > 0 && minStack.length > 0) return minStack[minStack.length-1];
    31 }

    执行结果                                   

  • 相关阅读:
    工作笔记(2017/02/15)
    JQuery基本知识(3)
    C#基础之操作字符串的方法
    JQuery基础知识(2)
    JQuery基础知识(1)
    将前台input中的数据异步传到后台并存入数据库
    C#基本知识零散总结
    ASP.NET中的C#基础知识
    C#练习
    将JSON数组显示前台Table中
  • 原文地址:https://www.cnblogs.com/sunlinan/p/14308703.html
Copyright © 2011-2022 走看看