zoukankan      html  css  js  c++  java
  • [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();
     */
    

      

  • 相关阅读:
    iis管理器的程序应用池中没有Asp.NET v4.0
    Rowlock、UPDLOCK
    转SQLSERVER 会不会自动加锁
    安装IE11必备更新
    阻止表单提交刷新页面的问题
    C#分屏控件用法实例
    Flex内存泄露解决方法和内存释放优化原则
    DataSet.Clear() Method()
    短文件名漏洞修复
    vs2017创建dotnetcore web项目,并部署到centos7上
  • 原文地址:https://www.cnblogs.com/271934Liao/p/7027635.html
Copyright © 2011-2022 走看看