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;
        }

          

  • 相关阅读:
    jQuery火箭图标返回顶部代码
    质数和分解(完全背包)
    CodeForces
    FZU
    FZU
    Pets(匈牙利算法)
    Construct a Matrix (矩阵快速幂+构造)
    绝世好题(线性dp)
    String painter (区间dp)
    Funny Positive Sequence (思维+前缀)
  • 原文地址:https://www.cnblogs.com/skillking/p/9783447.html
Copyright © 2011-2022 走看看