zoukankan      html  css  js  c++  java
  • 力扣155.最小栈 & 剑指offer 20.包含min 函数的栈

    力扣155.最小栈 & 剑指offer 20.包含min 函数的栈

    题目描述

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

    注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。

    思路:

        1.  定义两个栈,一个 stack1 栈用于存储栈的元素,另一个 stack2 栈用来存储当前stack1的栈顶元素对应的最小的元素,构造函数stack2压入一个Integer.MAX_VALUE
        2. 每当push 一个元素,把当前元素和栈2的栈顶元素比较,把较小者压入栈2, 需要存储的元素压入栈一,这样两个栈的栈顶元素分别是我们存储的值和当前的最小值
        3. 每当pop 一个元素,同时pop stack2 中的一个元素

     4. top()函数返回stack的栈顶值,min()函数返回 stack2 的栈顶值

     1 class MinStack {
     2     Stack<Integer> stack1 = new Stack<Integer>();
     3     Stack<Integer> stack2 = new Stack<Integer>();
     4     // int min = Integer.MAX_VALUE;
     5 
     6     /** initialize your data structure here. */
     7     public MinStack() {
     8         stack2.push(Integer.MAX_VALUE); // 把int类型的最大值压入栈2
     9     }
    10     
    11     public void push(int x) {
    12         // 把当前元素和栈2的栈顶元素比较,把较小者压入栈2, 需要存储的元素压入栈一
    13         int min = Math.min(x, stack2.peek());
    14        
    15         stack1.push(x);
    16         stack2.push(min);
    17     }
    18     
    19     public void pop() {
    20         // 出栈的时候两个栈同时出栈
    21         if(!stack1.empty()){
    22             stack1.pop();
    23             stack2.pop();
    24         }
    25     }
    26     
    27     public int top() {
    28         if(!stack1.empty()){
    29             return stack1.peek();
    30         }
    31         return 0;
    32     }
    33     
    34     public int getMin() {
    35         if(!stack2.empty()){
    36             return stack2.peek();
    37         }
    38         return 0;
    39     }
    40 }

    力扣测试时间为9ms, 空间为41.4MB

    复杂度分析:

    时间复杂度:获取最小值的时间复杂度为O(1)

    空间复杂度:需要两个栈,所以空间复杂度为O(n)

  • 相关阅读:
    Excel催化剂图表系列之品味IBCS瀑布图观察企业利润构成
    Excel催化剂图表系列之一键完成IBCS国际商业标准图表
    transfer-webpack-plugin最简使用示例
    将本地目录上传值git仓库
    webpack最简示例
    git的sshkey生成步骤
    从iconfont下载项目所需的图标资源
    html5的video标签自动播放
    windows下配置apache+php环境
    win10下配置php环境变量
  • 原文地址:https://www.cnblogs.com/hi3254014978/p/12584486.html
Copyright © 2011-2022 走看看