zoukankan      html  css  js  c++  java
  • 155. Min Stack

    一、题目

      1、审题

      

      2、分析

        设计一个 minStack,使其有  pop、push、top、getMin 功能,且 getMin 的检索时间为常数。

    二、解答

      1、思路:

         采用一个 Stack 进行实现。

          ①、采用变量 min 记录站中的最小值。

          ②、若入栈元素 p >= min,则 P 入栈。否则 min 先入栈,p 再入栈,且min 值修改为 P。当 p 出栈时,min即可再次通过出栈获得。

       

      int min = Integer.MAX_VALUE;
        Stack<Integer> stack = new Stack<>();
        /** initialize your data structure here. */
        public MinStack() {
        }
        
        public void push(int x) {
    
            if(x <= min) {
                stack.push(min);     // 若 min >= x, 将前一个 min 埋在下边一个位置
                min = x;
            }
            stack.push(x);            // x 埋入
        }
        
        public void pop() {
            
            if(stack.pop() == min)    // 若出栈元素为 min 
                min = stack.pop();    // 则前一个 min 为再次出栈
        }
        
        public int top() {
            return stack.peek();
        }
        
        public int getMin() {
            return min;
        }

          

  • 相关阅读:
    算法竞赛进阶指南--lowbit运算,找到二进制下所有是1的位
    linux
    conda配置安装pytorch
    anaconda的安装及使用
    python操作mysql
    python生成文字云
    决策树基本原理
    Ubuntu截图软件
    ubuntu安装teamviewer
    k-最近邻算法基本原理
  • 原文地址:https://www.cnblogs.com/skillking/p/9783447.html
Copyright © 2011-2022 走看看