最小栈

    xiaoxiao2021-03-25  120

    一个支持min方法返回当前栈中最小值的栈

    //有一个方法 min() 返回栈的最小值 public class MinStack<key extends Comparable<key>> { private ArrayList<key> stack = new ArrayList<key>(); // 存储最小值 private ArrayList<key> minStack = new ArrayList<key>(); public key min() { if(minStack.isEmpty()) return null; // 返回ArrayList最后一个元素 return minStack.get(minStack.size()-1); } public void push(key v) { if(stack.size() == 0){ stack.add(v); minStack.add(v); return; }else { // 若新入元素小于当前最小值,则入保存最小元素的栈,否则让保存最小元素的栈再次push当前最小值 if(v.compareTo(minStack.get(minStack.size()-1)) < 0){ minStack.add(v); }else { minStack.add(minStack.get(minStack.size()-1)); } stack.add(v); } } public key pop() { if(stack.isEmpty())return null; minStack.remove(minStack.size()-1); return stack.remove(stack.size()-1); } public boolean isEmpty() { return stack.isEmpty(); } public static void main(String[] args) { MinStack<Integer> m = new MinStack<>(); m.push(1); m.push(2); m.pop(); m.push(4); System.out.print(m.min() + " "); m.pop(); m.pop(); System.out.print(m.min() + " "); } }
    转载请注明原文地址: https://ju.6miu.com/read-5012.html

    最新回复(0)