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();
     */
    

      

  • 相关阅读:
    解决ActiveX插件ZIndex属性无效问题
    XNA游戏开发之字符篇
    XNA游戏开发之滚动背景
    ExtJs之FormPanel篇
    独立Discuz头像编辑模块
    XNA游戏开发之2D游戏
    WPF系列之应用程序生命周期
    DiscuzX2.0在windows下的配置
    Silverlight之out of Browser模式
    使用VisualStudio2010连接CodePlex进行代码管理
  • 原文地址:https://www.cnblogs.com/271934Liao/p/7027635.html
Copyright © 2011-2022 走看看