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 }

    执行结果                                   

  • 相关阅读:
    线程池参数详解
    线程池各个参数详解以及如何自定义线程池
    fastdfs 安装
    SQL 执行顺序
    《SQL 进阶教程》 查找局部不一致的数据
    redis 高性能的原因
    一致性hash
    环境部署数据库报错
    redis 常用命令
    redis 高级学习和应用场景
  • 原文地址:https://www.cnblogs.com/sunlinan/p/14308703.html
Copyright © 2011-2022 走看看