155. 最小栈
描述
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
push(x) —— 将元素 x 推入栈中。
pop() —— 删除栈顶的元素。
top() —— 获取栈顶元素。
getMin() —— 检索栈中的最小元素。
链接
155. 最小栈 - 力扣(LeetCode) (leetcode-cn.com)
解法:用单调栈(注意在push和 pop方法中操作)
1 class MinStack { 2 Stack<Integer> stack; 3 Stack<Integer> minStack; 4 5 /** initialize your data structure here. */ 6 public MinStack() { 7 stack = new Stack<>(); 8 minStack = new Stack<>(); 9 } 10 11 public void push(int val) { 12 stack.push(val); 13 if(minStack.isEmpty()) { 14 minStack.push(val); 15 } else { 16 if(val <= minStack.peek()) { 17 minStack.push(val); 18 } 19 } 20 } 21 22 public void pop() { 23 int popVal = stack.pop(); 24 int topVal = minStack.peek(); 25 if(topVal == popVal) { 26 minStack.pop(); 27 } 28 } 29 30 public int top() { 31 return stack.peek(); 32 } 33 34 public int getMin() { 35 return minStack.peek(); 36 } 37 }
题解链接