• LeetCode_155. Min Stack


    155. Min Stack

    Easy

    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.
    package leetcode.easy;
    
    import java.util.Stack;
    
    public class MinStack {
    	private Stack<Integer> stack = new Stack<Integer>();
    	private Stack<Integer> min_stack = new Stack<Integer>();
    
    	/** initialize your data structure here. */
    	public MinStack() {
    
    	}
    
    	public void push(int x) {
    		stack.push(x);
    		if (min_stack.isEmpty() || (!min_stack.isEmpty() && x <= min_stack.peek())) {
    			min_stack.push(x);
    		}
    	}
    
    	public void pop() {
    		if (!stack.isEmpty()) {
    			if (stack.peek().equals(min_stack.peek())) {
    				min_stack.pop();
    			}
    			stack.pop();
    		}
    	}
    
    	public int top() {
    		if (!stack.isEmpty()) {
    			return stack.peek();
    		}
    		return Integer.MIN_VALUE;
    	}
    
    	public int getMin() {
    		if (!min_stack.isEmpty()) {
    			return min_stack.peek();
    		}
    		return Integer.MIN_VALUE;
    	}
    
    	@org.junit.Test
    	public void test() {
    		MinStack minStack = new MinStack();
    		minStack.push(-2);
    		minStack.push(0);
    		minStack.push(-3);
    		System.out.println(minStack.getMin());// --> Returns -3.
    		minStack.pop();
    		System.out.println(minStack.top());// --> Returns 0.
    		System.out.println(minStack.getMin());// --> Returns -2.
    	}
    }
    
    /**
     * 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();
     */
    
  • 相关阅读:
    java基础(七)面向对象(二)
    java基础 (六)面向对象(一)
    java基础(五)
    java基础(四)
    sqlloader导出数据和导入数据
    SQL LOADER 的用法 TXT文件导入非常之快
    在线代码对比/匹配 代码对比 在线文本比较
    JAVA 调用命令并输出
    RFC总结-SD模块
    使用BAPI_ACC_DOCUMENT_POST,创建会计凭证,用BADI扩展字段(转)
  • 原文地址:https://www.cnblogs.com/denggelin/p/11670183.html
Copyright © 2020-2023  润新知