@@ -34,27 +34,27 @@ class MinStack:
34
34
"""
35
35
initialize your data structure here.
36
36
"""
37
- self .s1 = []
38
- self .s2 = []
37
+ self .s = []
38
+ self .mins = [float ( ' inf ' ) ]
39
39
40
- def push (self , x : int ) -> None :
41
- self .s1 .append(x )
42
- self .s2 .append(x if not self .s2 or self .s2 [- 1 ] >= x else self .s2[ - 1 ] )
40
+ def push (self , val : int ) -> None :
41
+ self .s .append(val )
42
+ self .mins .append(min ( self .mins [- 1 ], val) )
43
43
44
44
def pop (self ) -> None :
45
- self .s1 .pop()
46
- self .s2 .pop()
45
+ self .s .pop()
46
+ self .mins .pop()
47
47
48
48
def top (self ) -> int :
49
- return self .s1 [- 1 ]
49
+ return self .s [- 1 ]
50
50
51
51
def min (self ) -> int :
52
- return self .s2 [- 1 ]
52
+ return self .mins [- 1 ]
53
53
54
54
55
55
# Your MinStack object will be instantiated and called as such:
56
56
# obj = MinStack()
57
- # obj.push(x )
57
+ # obj.push(val )
58
58
# obj.pop()
59
59
# param_3 = obj.top()
60
60
# param_4 = obj.min()
@@ -64,38 +64,39 @@ class MinStack:
64
64
65
65
``` java
66
66
class MinStack {
67
- private Deque<Integer > s1 ;
68
- private Deque<Integer > s2 ;
67
+ private Deque<Integer > s ;
68
+ private Deque<Integer > mins ;
69
69
70
70
/* * initialize your data structure here. */
71
71
public MinStack () {
72
- s1 = new ArrayDeque<> ();
73
- s2 = new ArrayDeque<> ();
72
+ s = new ArrayDeque<> ();
73
+ mins = new ArrayDeque<> ();
74
+ mins. push(Integer . MAX_VALUE );
74
75
}
75
-
76
- public void push (int x ) {
77
- s1 . push(x );
78
- s2 . push(s2 . isEmpty() || s2 . peek() >= x ? x : s2 . peek( ));
76
+
77
+ public void push (int val ) {
78
+ s . push(val );
79
+ mins . push(Math . min(mins . peek(), val ));
79
80
}
80
-
81
+
81
82
public void pop () {
82
- s1 . pop();
83
- s2 . pop();
83
+ s . pop();
84
+ mins . pop();
84
85
}
85
-
86
+
86
87
public int top () {
87
- return s1 . peek();
88
+ return s . peek();
88
89
}
89
-
90
+
90
91
public int min () {
91
- return s2 . peek();
92
+ return mins . peek();
92
93
}
93
94
}
94
95
95
96
/**
96
97
* Your MinStack object will be instantiated and called as such:
97
98
* MinStack obj = new MinStack();
98
- * obj.push(x );
99
+ * obj.push(val );
99
100
* obj.pop();
100
101
* int param_3 = obj.top();
101
102
* int param_4 = obj.min();
0 commit comments