zoukankan      html  css  js  c++  java
  • 最小栈问题

    问题

    定义栈数据结构,请在类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min,push及pop的时间复杂度都是O(1)

    class MinStack<T> {
    	private Stack main = new Stack<T>();
    	private Stack child = new Stack<T>();
    	Comparator<T> comparator;
    
    	public MinStack(Comparator<T> _comparator) {
    		comparator = _comparator;
    	}
    
    	public T pop() {
    		if (main.isEmpty())
    			throw new EmptyStackException();
    		else {
    			if (!child.isEmpty()
    					&& comparator.compare((T) main.peek(), (T) child.peek()) == 0)
    				child.pop();
    			return (T) main.pop();
    		}
    	}
    
    	public void push(T t) {
    		main.push(t);
    		if (child.isEmpty())
    			child.push(t);
    		else if (comparator.compare(t, (T) child.peek()) < 0)
    			child.push(t);
    	}
    
    	public T min() {
    		if (!child.isEmpty())
    			return (T) child.peek();
    		else
    			throw new EmptyStackException();
    	}
    }
  • 相关阅读:
    今日总结
    今日总结
    今日总结
    今日总结
    今日总结
    今日总结
    今日总结
    今日总结
    今日总结
    自学Java0721
  • 原文地址:https://www.cnblogs.com/xidongyu/p/6723321.html
Copyright © 2011-2022 走看看