@@ -205,6 +205,97 @@ private:
205
205
};
206
206
```
207
207
208
+ ### ** TypeScript**
209
+
210
+ ``` ts
211
+ class MedianFinder {
212
+ public arr: number [] = [];
213
+
214
+ constructor () {}
215
+
216
+ addNum(num : number ): void {
217
+ const { arr } = this ;
218
+ let l = 0 ;
219
+ let r = arr .length - 1 ;
220
+ while (l <= r ) {
221
+ const mid = (l + r ) >> 1 ;
222
+ if (arr [mid ] < num ) {
223
+ l = mid + 1 ;
224
+ } else {
225
+ r = mid - 1 ;
226
+ }
227
+ }
228
+ arr .splice (l , 0 , num );
229
+ }
230
+
231
+ findMedian(): number {
232
+ const { arr } = this ;
233
+ const n = arr .length ;
234
+ if (n % 2 === 0 ) {
235
+ return (arr [n >> 1 ] + arr [(n >> 1 ) - 1 ]) / 2 ;
236
+ }
237
+ return arr [n >> 1 ];
238
+ }
239
+ }
240
+
241
+ /**
242
+ * Your MedianFinder object will be instantiated and called as such:
243
+ * var obj = new MedianFinder()
244
+ * obj.addNum(num)
245
+ * var param_2 = obj.findMedian()
246
+ */
247
+ ```
248
+
249
+ ### ** Rust**
250
+
251
+ ``` rust
252
+ struct MedianFinder {
253
+ arr : Vec <i32 >,
254
+ }
255
+
256
+ /**
257
+ * `&self` means the method takes an immutable reference.
258
+ * If you need a mutable reference, change it to `&mut self` instead.
259
+ */
260
+ impl MedianFinder {
261
+ /** initialize your data structure here. */
262
+ fn new () -> Self {
263
+ MedianFinder {
264
+ arr : vec! []
265
+ }
266
+ }
267
+
268
+ fn add_num (& mut self , num : i32 ) {
269
+ let mut l = 0 ;
270
+ let mut r = self . arr. len ();
271
+ while l < r {
272
+ let mid = l + r >> 1 ;
273
+ if self . arr[mid ] < num {
274
+ l = mid + 1 ;
275
+ } else {
276
+ r = mid ;
277
+ }
278
+ }
279
+ self . arr. splice (l .. l , [num ]);
280
+ }
281
+
282
+ fn find_median (& self ) -> f64 {
283
+ let n = self . arr. len ();
284
+ match n % 2 == 0 {
285
+ true => f64 :: from (self . arr[n >> 1 ] + self . arr[(n >> 1 ) - 1 ]) / 2.0 ,
286
+ false => f64 :: from (self . arr[n >> 1 ]),
287
+ }
288
+ }
289
+ }
290
+
291
+ /**
292
+ * Your MedianFinder object will be instantiated and called as such:
293
+ * let obj = MedianFinder::new();
294
+ * obj.add_num(num);
295
+ * let ret_2: f64 = obj.find_median();
296
+ */
297
+ ```
298
+
208
299
### ** ...**
209
300
210
301
```
0 commit comments