155. 最小栈/面试题30. 包含min函数的栈(简单) 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
push(x) —— 将元素 x 推入栈中。
pop() —— 删除栈顶的元素。
top() —— 获取栈顶元素。
getMin() —— 检索栈中的最小元素。
示例: 1 2 3 4 5 6 7 8 MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.getMin(); --> 返回 -3. minStack.pop(); minStack.top(); --> 返回 0. minStack.getMin(); --> 返回 -2.
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/min-stack
思路: 使用辅助栈,栈1正常栈,栈2只push每次最小的,如果没有就不push,pop时,如果栈1pop的和栈2一样,那么就栈2也同样pop
代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 class MinStack { Stack<Integer> stack1,stack2; public MinStack () { stack1 = new Stack<Integer>(); stack2 = new Stack<Integer>(); } public void push (int x) { stack1.push(x); if (stack2.isEmpty() || x<=stack2.peek()) stack2.push(x); } public void pop () { if (stack1.pop().equals(stack2.peek())){ stack2.pop(); } } public int top () { return stack1.peek(); } public int getMin () { return stack2.peek(); } }