zoukankan      html  css  js  c++  java
  • 栈的最小值

    此博客链接:https://www.cnblogs.com/ping2yingshi/p/12818563.html

    栈的最小值(121min)

    题目链接:https://leetcode-cn.com/problems/min-stack-lcci/submissions/

    请设计一个栈,除了常规栈支持的pop与push函数以外,还支持min函数,该函数返回栈元素中的最小值。执行push、pop和min操作的时间复杂度必须为O(1)。


    示例:

    MinStack minStack = new MinStack();
    minStack.push(-2);
    minStack.push(0);
    minStack.push(-3);
    minStack.getMin(); --> 返回 -3.
    minStack.pop();
    minStack.top(); --> 返回 0.
    minStack.getMin(); --> 返回 -2.

    题解:

             思路:

                      1.定义两个栈,一个栈stack1存放普通元素,一个栈stack2存放最小值。

                      2.入栈时,入stack1,判断当前值是否比存储最小值栈中元素小,或者存储最小值栈为空,存入stack2中。

                     3.出栈时,出栈stack1中的元素,比较出栈元素是否和最小值相等,如果相等,最小值栈中的元素也出栈。

    代码如下:

    class MinStack {
    
        /** initialize your data structure here. */
    Stack <Integer> stack1;
    Stack <Integer> stack2;
        public MinStack() {
           stack1=new Stack<Integer>();
           stack2=new Stack<Integer>();
        }
        
        public void push(int x) {
            stack1.push(x);
            if(stack2.empty()||x<=stack2.peek())
                stack2.push(x);
        }
        
        public void pop() {
             int temp=stack1.peek();
             if(temp==stack2.peek()) 
                stack2.pop();
              stack1.pop();     
        }
        
        public int top() {
           return  stack1.peek();
        }
        
        public int getMin() {
            return stack2.peek();
        }
    }
  • 相关阅读:
    join函数——Gevent源码分析
    代理上网(ssh 动态端口转发)
    内核热patch
    技术债
    mysql 隔离级别与间隙锁等
    python type
    django : related_name and related_query_name
    ssh 卡主
    logistics regression
    __new__ 和 __init__
  • 原文地址:https://www.cnblogs.com/ping2yingshi/p/12818563.html
Copyright © 2011-2022 走看看