实现最小栈

    xiaoxiao2025-03-24  51

    class MinStack { /** initialize your data structure here. */ public MinStack() { } Stack <Integer> stack = new Stack<Integer>(); Stack <Integer> minstack = new Stack<Integer>(); //int[] stack = new int[40]; int i = 0; ///int[] minstack = new int[40]; int j = 0; //入栈 对两个栈都要入栈 //每次放入之前需要看最小栈 //的栈顶元素的值比较 public void push(int x) { stack.push(x); if(minstack.empty()){ minstack.push(x); }else{ if(x <= minstack.peek()){ //维持最小栈的最小值,也是栈的最小值 minstack.push(x); } } } //出栈不是出最小栈 public void pop() { if(!stack.empty()){ int element = stack.pop(); if(element == minstack.peek()){ minstack.pop(); } } } //返回栈顶元素 public int top() { if(stack.empty()){ return -1; } else{ return stack.peek(); } } //返回栈最小元素 public int getMin() { return minstack.peek(); } }

     

    最新回复(0)