forked from super30admin/Design-1
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Minstack.java
63 lines (43 loc) · 1.26 KB
/
Minstack.java
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
58
59
60
61
62
// Time Complexity :O(1)
// Space Complexity :O(n)
// Did this code successfully run on Leetcode : yes
// Any problem you faced while coding this : No.
// Your code here along with comments explaining your approach
The approach used in the following solution is to keep track of the minimum value.
And we will get minimum value by checking if pop value is equal to min, which makes the time complexity of getting the minimum value O(1).
class MinStack {
int min = Integer.MAX_VALUE;
Stack <Integer> stack = new Stack<>();
/** initialize your data structure here. */
public MinStack() {
}
public void push(int x) {
if (x <= min)
{
stack.push(min);
min = x;
}
stack.push(x);
}
public void pop() {
int pop = stack.pop();
if (pop == min)
{
min = stack.pop();
}
}
public int top() {
return stack.peek();
}
public int getMin() {
return min;
}
}
/**
* Your MinStack object will be instantiated and called as such:
* MinStack obj = new MinStack();
* obj.push(x);
* obj.pop();
* int param_3 = obj.top();
* int param_4 = obj.getMin();
*/