• [LeetCode] 155. Min Stack Java


    题目:

    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.

    Example:

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

    题意及分析:实现一个stack,要求有push,pop,top功能,还要有一个返回stack最小值的函数(要在常量时间里返回这个值)。在这里我用一个LinkList来实现stack,具体看下面代码。对于最小值,在每次添加或者删除的时候记录即可,这样就能在常量时间获得stack的最小值。

    代码:

    public class MinStack {
    
        /** initialize your data structure here. */
        LinkedList<Integer> linkedList=new LinkedList<>();
    	int min=Integer.MAX_VALUE;
        /** initialize your data structure here. */
        public MinStack() {
        }
        
        public void push(int x) {
            linkedList.add(x);
            if(x<min)
            	min=x;
        }
        
        public void pop() {
        	if(min<linkedList.getLast()) //min不变
        		linkedList.removeLast();
        	else{
        		linkedList.removeLast();
        		min=Integer.MAX_VALUE;
        		for(int i=0;i<linkedList.size();i++){
        			if(linkedList.get(i)<min)
        				min=linkedList.get(i);
        		}
        	}
            
        }
        
        public int top() {
            return linkedList.getLast();
        }
        
        public int getMin() {
            return min;
        }
    }
    
    /**
     * Your MinStack object will be instantiated and called as such:
     * MinStack obj = new MinStack();
     * obj.push(x);
     * obj.pop();
     * int param_3 = obj.top();
     * int param_4 = obj.getMin();
     */
    

      

  • 相关阅读:
    16.小程序request请求
    15.小程序接入百度地图获取地理位置
    14. 微信小程序之wxss
    13.小程序视图层的模板
    es6字符串几个方法的理解
    记一次仿京东首页的轮播图效果
    ES6中Promise使用方法
    关于新版VS编辑环境下提示fopen不安全的问题报C4996错误的解决办法
    css布局拓展
    HTML的表单元素
  • 原文地址:https://www.cnblogs.com/271934Liao/p/7027635.html
Copyright © 2020-2023  润新知