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 }

 

题解链接

 

posted @ 2021-11-26 22:45  DidUStudy  阅读(18)  评论(0编辑  收藏  举报