• LeetCode——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.
    原题链接:https://oj.leetcode.com/problems/min-stack/
    取出栈中的最小元素须要常数时间。
    能够用两个栈来实现,当中一个栈存储的是所有的元素,而还有一个栈存储的是前一个栈中的最小元素,这样每次更新后一个栈就可以。
    public class MinStack {
    	private List<Integer> stack = new ArrayList<Integer>();
    	private List<Integer> minstack = new ArrayList<Integer>();
    	public void push(int x) {
    		stack.add(x);
    		if(minstack.isEmpty() || minstack.get(minstack.size()-1) >= x)
    			minstack.add(x);
    	}
    
    	public void pop() {
    		if(stack.isEmpty())
    			return;
    		int tmp = stack.remove(stack.size()-1);
    		if(!minstack.isEmpty() && tmp == minstack.get(minstack.size()-1))
    			minstack.remove(minstack.size()-1);
    	}
    
    	public int top() {
    		if(!stack.isEmpty())
    			return stack.get(stack.size()-1);
    		return -1;
    	}
    
    	public int getMin() {
    		if(!minstack.isEmpty())
    			return minstack.get(minstack.size()-1);
    		return -1;
    	}
    }
    




  • 相关阅读:
    运算符优先级问题
    文件操作工具,需者自取
    Text文档编码识别方法
    删除重复文件的程序
    修道士和野人问题
    猜数字游戏
    存储器层级图
    IL指令汇总
    输入1~8,每个数字不重复
    厦门大学线下编程比赛第一题:求和
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/8455528.html
Copyright © 2020-2023  润新知