forked from super30admin/Design-1
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMinStack.java
More file actions
57 lines (47 loc) · 1.38 KB
/
Copy pathMinStack.java
File metadata and controls
57 lines (47 loc) · 1.38 KB
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import java.util.Stack;
class MinStack {
/*
Initialize min to int max. When inserting value that is less than or equal to min,
we will first push the previous min value into the min stack and then push the current value.
Similarly, when popping value from stack, if the popped value is equal to the min value,
then we again pop an element and assign that as the min value.
// Time Complexity : push, pop, peek, getMin - O(1)
// Space Complexity : O(n)
// Did this code successfully run on Leetcode : Yes
// Any problem you faced while coding this : No
*/
private Stack<Integer> minSt;
int min;
public MinStack() {
minSt = new Stack<>();
min = Integer.MAX_VALUE;
minSt.push(min);
}
public void push(int val) {
if (val <= min) {
minSt.push(min);
min = val;
}
minSt.push(val);
}
public void pop() {
int val = minSt.pop();
if (val == min) {
min = minSt.pop();
}
}
public int top() {
return minSt.peek();
}
public int getMin() {
return min;
}
}
/**
* Your MinStack object will be instantiated and called as such:
* MinStack obj = new MinStack();
* obj.push(val);
* obj.pop();
* int param_3 = obj.top();
* int param_4 = obj.getMin();
*/