剑指offer 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))

早过忘川 提交于 2019-12-05 09:15:58
需要在时间复杂度O(1)内完成查找最小值,需要定义两个栈,一个现有值栈,一个最小值栈入栈:如果新入栈的元素小于最小值栈的栈顶,那么不仅将新元素入现有值栈也要入最小值栈出栈:如果两个栈的栈顶元素相同,那么均出栈,否则只要出栈现有值栈
package cn.njupt.demo3;import java.util.Stack;public class Stack1 {    private Stack<Integer> myStack=new Stack<>();    private Stack<Integer> minStack=new Stack<>(); //一个现有值栈,一个最小值栈    public void push(int node) {        myStack.push(node);        if(minStack.isEmpty() || node<minStack.peek()){            minStack.push(node);        }    }    public void pop() {        if(myStack.peek()==minStack.peek()){            myStack.pop();            minStack.pop();        }        else{            myStack.pop();        }    }    public int top() {        return myStack.peek();    }    public int min() {        return minStack.peek();    }}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!