package P_12_12; import java.util.Stack; /** * Created with IntelliJ IDEA. * Description: * User: * Date: 2021-12-12 * Time: 11:12 */ /* * 设计一个最小栈 * 最小的栈只保存当前栈内的最小元素; * 普通的栈全部往里面放; * * */ public class MinStack { private Stack<Integer> s1; private Stack<Integer> s2; public MinStack() { s1 = new Stack<>(); s2 = new Stack<>(); } /* * 普通的栈每一次都要放 * 放之前只检查最小的栈, * 如果栈为空 那么就直接放置 * 要是栈不为空的话 那么就进行判断 最小栈是否为空 为空只要放置就可以; * 若是不可以那么 只有当 最小值出现才会放置 最小栈内; * */ public void push(int val) { s1.push(val); if(s2.isEmpty()){ s2.push(val); }else if( s2.peek() >= val){ s2.push(val); } } public void pop() { //只针对普通栈 if(s1.isEmpty()){ return; } s1.pop(); int tmp = s1.pop(); if(tmp == s2.peek()){ s2.pop(); } } public int top() { //针对普通栈; if(s1.isEmpty()){ return -1; } return s1.peek(); } public int getMin() { //针对最小栈 if(s2.isEmpty()){ return -1; } return s2.peek(); } }
设计一个最小栈
最新推荐文章于 2024-10-15 18:50:01 发布