155. 最小栈
# 155. 最小栈 (opens new window)
分析:每次入栈时,保存该元素入栈时(作为栈顶元素)的最小值。
每个元素和当前最小值绑定的好处在于,当后续有新的元素入栈又出栈时,都不会影响到当前元素绑定的最小值。也就是说栈顶元素的最小值对应当前栈的最小值,它只会受到该元素之下(底下)元素的影响。
class MinStack {
Stack<int[]> stack;
int min=Integer.MAX_VALUE;
public MinStack() {
stack=new Stack<>();
}
public void push(int val) {
min=Math.min(min,val);
stack.push(new int[]{val,min});
}
public void pop() {
stack.pop();
min=stack.size()==0?Integer.MAX_VALUE:getMin();
}
public int top() {
return stack.peek()[0];
}
public int getMin() {
return stack.peek()[1];
}
}
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
编辑 (opens new window)
上次更新: 2023/12/15, 15:49:57