zoukankan      html  css  js  c++  java
  • Java [Leetcode 155]Min Stack

    题目描述:

    Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.

    • push(x) -- Push element x onto stack.
    • pop() -- Removes the element on top of the stack.
    • top() -- Get the top element.
    • getMin() -- Retrieve the minimum element in the stack.

    解题思路:

    主要是怎么保存最小值这个问题,每次在向栈中添加数据时,总是和当前的最小值比较,如果比当前的最小值小,那么则把当前的最小值压入栈中,表明当前栈中的最小值为当前最小值,然后再把新的数据压入栈中。每次弹出栈顶的元素时候,将弹出的数据与当前的最小值比较,如果相等,表明已经达到当前最小值所在的位置,下面的那个数是当前栈中的最小值,将其弹出,其值为新的最小值。

    代码如下:

    class MinStack {
        
    	Stack<Integer> stack = new Stack<Integer>();
    	int min = Integer.MAX_VALUE;
    	
        public void push(int x) {
        	if(x <= min){
        		stack.push(min);
        		min = x;
        	}
        	stack.push(x);
        }    
    
        public void pop() {
        	int peek = stack.pop();
        	if(peek == min)
        		min = stack.pop();
        }
    
        public int top() {
            return stack.peek();
        }
    
        public int getMin() {
            return min;
        }
    }
    

      

  • 相关阅读:
    windows权限维持之注册表
    mstsc痕迹清理
    内网常用爆破手法
    RDP攻击&防御
    Java SPI 机制
    mysqldump 数据库备份
    Redis分布式锁
    Seata分布式事务中间件学习和实践
    pytube
    idea github登录
  • 原文地址:https://www.cnblogs.com/zihaowang/p/5206417.html
Copyright © 2011-2022 走看看