当前位置: 首页 > 后端技术 > Java

LeetCode-155-MinimumStack

时间:2023-04-01 17:28:07 Java

MinimumStack题目描述:设计一个支持push、pop、top操作,并能在常数时间内取回最小元素的栈。push(x)–将元素x压入堆栈。pop()-移除堆栈顶部的元素。top()-获取栈顶元素。getMin()-检索堆栈中的最小元素。例子见LeetCode官网。来源:LeetCode链接:https://leetcode-cn.com/probl...版权归LeetCode网络所有。商业转载请联系官方授权,非商业转载请注明出处。方案一:双栈使用两个栈,一个栈data存放数据,一个栈minVal存放最小值。具体方法逻辑:push():将val值放入数据栈顶,判断val值是否小于等于minVal栈顶元素,如果是,则将val值放入栈顶minVal堆栈的顶部;pop():取出数据栈顶元素,判断取出的元素是否等于minVal栈顶元素,则将minVal栈顶元素取出;top():查看数据栈顶元素;getMin():查看栈顶元素的minVal。importjava.util.Stack;publicclassLeetCode_155{publicstaticvoidmain(String[]args){MinStackminStack=newMinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);System.out.println(minStack.getMin());//返回-3。minStack.pop();System.out.println(minStack.top());//返回0.System.out.println(minStack.getMin());//返回-2。}}classMinStack{privateStack数据;私有堆栈<整数>最小值;/***在这里初始化你的数据结构。*/publicMinStack(){data=newStack<>();minVal=新堆栈<>();}publicvoidpush(intval){data.push(val);如果(minVal.isEmpty()){minVal.push(val);}elseif(val<=minVal.peek()){minVal.push(val);}}publicvoidpop(){if(data.isEmpty()){thrownewRuntimeException(“堆栈是空的。”);}intpopVal=data.pop();如果(popVal==minVal.peek()){minVal.pop();}}publicinttop(){returndata.peek();}publicintgetMin(){if(minVal.isEmpty()){thrownewRuntimeException("stackisempty.");}返回minVal.peek();}}【每日留言】不去追,永远不会不往前走,永远停留在原地。走得最远的人,就是知道目的地的人。