@@ -108,6 +108,51 @@ class MinStack {
108
108
*/
109
109
```
110
110
111
+ ### ** C++**
112
+
113
+ ``` cpp
114
+ class MinStack {
115
+ private:
116
+ stack<int > stk;
117
+ stack<int > minStk;
118
+ public:
119
+ /** initialize your data structure here. * /
120
+ MinStack() = default;
121
+
122
+ void push(int x) {
123
+ if (minStk.empty() || minStk.top() >= x) {
124
+ minStk.push(x);
125
+ }
126
+ stk.push(x);
127
+ }
128
+
129
+ void pop () {
130
+ int val = stk.top();
131
+ stk.pop();
132
+ if (val == minStk.top()) {
133
+ minStk.pop();
134
+ }
135
+ }
136
+
137
+ int top() {
138
+ return stk.top();
139
+ }
140
+
141
+ int getMin() {
142
+ return minStk.top();
143
+ }
144
+ };
145
+
146
+ /* *
147
+ * Your MinStack object will be instantiated and called as such:
148
+ * MinStack* obj = new MinStack();
149
+ * obj->push(x);
150
+ * obj->pop();
151
+ * int param_3 = obj->top();
152
+ * int param_4 = obj->getMin();
153
+ */
154
+ ```
155
+
111
156
### ** TypeScript**
112
157
113
158
``` ts
@@ -199,6 +244,60 @@ func (this *MinStack) GetMin() int {
199
244
*/
200
245
```
201
246
247
+ ### ** Rust**
248
+
249
+ ``` rust
250
+ use std :: collections :: VecDeque ;
251
+ struct MinStack {
252
+ stack : VecDeque <i32 >,
253
+ min_stack : VecDeque <i32 >,
254
+ }
255
+
256
+
257
+ /**
258
+ * `&self` means the method takes an immutable reference.
259
+ * If you need a mutable reference, change it to `&mut self` instead.
260
+ */
261
+ impl MinStack {
262
+
263
+ /** initialize your data structure here. */
264
+ fn new () -> Self {
265
+ Self { stack : VecDeque :: new (), min_stack : VecDeque :: new () }
266
+ }
267
+
268
+ fn push (& mut self , x : i32 ) {
269
+ self . stack. push_back (x );
270
+ if self . min_stack. is_empty () || * self . min_stack. back (). unwrap () >= x {
271
+ self . min_stack. push_back (x );
272
+ }
273
+ }
274
+
275
+ fn pop (& mut self ) {
276
+ let val = self . stack. pop_back (). unwrap ();
277
+ if * self . min_stack. back (). unwrap () == val {
278
+ self . min_stack. pop_back ();
279
+ }
280
+ }
281
+
282
+ fn top (& self ) -> i32 {
283
+ * self . stack. back (). unwrap ()
284
+ }
285
+
286
+ fn get_min (& self ) -> i32 {
287
+ * self . min_stack. back (). unwrap ()
288
+ }
289
+ }
290
+
291
+ /**
292
+ * Your MinStack object will be instantiated and called as such:
293
+ * let obj = MinStack::new();
294
+ * obj.push(x);
295
+ * obj.pop();
296
+ * let ret_3: i32 = obj.top();
297
+ * let ret_4: i32 = obj.get_min();
298
+ */
299
+ ```
300
+
202
301
### ** ...**
203
302
204
303
```
0 commit comments