File tree 3 files changed +154
-0
lines changed
solution/2200-2299/2251.Number of Flowers in Full Bloom
3 files changed +154
-0
lines changed Original file line number Diff line number Diff line change @@ -217,6 +217,59 @@ public:
217
217
};
218
218
```
219
219
220
+ ### ** Rust**
221
+
222
+ ``` rust
223
+ use std :: collections :: BTreeMap ;
224
+
225
+ impl Solution {
226
+ #[allow(dead_code)]
227
+ pub fn full_bloom_flowers (flowers : Vec <Vec <i32 >>, people : Vec <i32 >) -> Vec <i32 > {
228
+ let n = people . len ();
229
+
230
+ // First sort the people vector based on the first item
231
+ let mut people : Vec <(usize , i32 )> = people
232
+ . into_iter ()
233
+ . enumerate ()
234
+ . map (| x | x )
235
+ . collect ();
236
+
237
+ people . sort_by (| lhs , rhs | {
238
+ lhs . 1. cmp (& rhs . 1 )
239
+ });
240
+
241
+ // Initialize the difference vector
242
+ let mut diff = BTreeMap :: new ();
243
+ let mut ret = vec! [0 ; n ];
244
+
245
+ for f in flowers {
246
+ let (left , right ) = (f [0 ], f [1 ]);
247
+ diff
248
+ . entry (left )
249
+ . and_modify (| x | * x += 1 )
250
+ . or_insert (1 );
251
+
252
+ diff
253
+ . entry (right + 1 )
254
+ . and_modify (| x | * x -= 1 )
255
+ . or_insert (- 1 );
256
+ }
257
+
258
+ let mut sum = 0 ;
259
+ let mut i = 0 ;
260
+ for (k , v ) in diff {
261
+ while i < n && people [i ]. 1 < k {
262
+ ret [people [i ]. 0 ] += sum ;
263
+ i += 1 ;
264
+ }
265
+ sum += v ;
266
+ }
267
+
268
+ ret
269
+ }
270
+ }
271
+ ```
272
+
220
273
### ** Go**
221
274
222
275
``` go
Original file line number Diff line number Diff line change @@ -205,6 +205,59 @@ public:
205
205
};
206
206
```
207
207
208
+ ### ** Rust**
209
+
210
+ ``` rust
211
+ use std :: collections :: BTreeMap ;
212
+
213
+ impl Solution {
214
+ #[allow(dead_code)]
215
+ pub fn full_bloom_flowers (flowers : Vec <Vec <i32 >>, people : Vec <i32 >) -> Vec <i32 > {
216
+ let n = people . len ();
217
+
218
+ // First sort the people vector based on the first item
219
+ let mut people : Vec <(usize , i32 )> = people
220
+ . into_iter ()
221
+ . enumerate ()
222
+ . map (| x | x )
223
+ . collect ();
224
+
225
+ people . sort_by (| lhs , rhs | {
226
+ lhs . 1. cmp (& rhs . 1 )
227
+ });
228
+
229
+ // Initialize the difference vector
230
+ let mut diff = BTreeMap :: new ();
231
+ let mut ret = vec! [0 ; n ];
232
+
233
+ for f in flowers {
234
+ let (left , right ) = (f [0 ], f [1 ]);
235
+ diff
236
+ . entry (left )
237
+ . and_modify (| x | * x += 1 )
238
+ . or_insert (1 );
239
+
240
+ diff
241
+ . entry (right + 1 )
242
+ . and_modify (| x | * x -= 1 )
243
+ . or_insert (- 1 );
244
+ }
245
+
246
+ let mut sum = 0 ;
247
+ let mut i = 0 ;
248
+ for (k , v ) in diff {
249
+ while i < n && people [i ]. 1 < k {
250
+ ret [people [i ]. 0 ] += sum ;
251
+ i += 1 ;
252
+ }
253
+ sum += v ;
254
+ }
255
+
256
+ ret
257
+ }
258
+ }
259
+ ```
260
+
208
261
### ** Go**
209
262
210
263
``` go
Original file line number Diff line number Diff line change
1
+ use std:: collections:: BTreeMap ;
2
+
3
+ impl Solution {
4
+ #[ allow( dead_code) ]
5
+ pub fn full_bloom_flowers ( flowers : Vec < Vec < i32 > > , people : Vec < i32 > ) -> Vec < i32 > {
6
+ let n = people. len ( ) ;
7
+
8
+ // First sort the people vector based on the first item
9
+ let mut people: Vec < ( usize , i32 ) > = people
10
+ . into_iter ( )
11
+ . enumerate ( )
12
+ . map ( |x| x)
13
+ . collect ( ) ;
14
+
15
+ people. sort_by ( |lhs, rhs| {
16
+ lhs. 1 . cmp ( & rhs. 1 )
17
+ } ) ;
18
+
19
+ // Initialize the difference vector
20
+ let mut diff = BTreeMap :: new ( ) ;
21
+ let mut ret = vec ! [ 0 ; n] ;
22
+
23
+ for f in flowers {
24
+ let ( left, right) = ( f[ 0 ] , f[ 1 ] ) ;
25
+ diff
26
+ . entry ( left)
27
+ . and_modify ( |x| * x += 1 )
28
+ . or_insert ( 1 ) ;
29
+
30
+ diff
31
+ . entry ( right + 1 )
32
+ . and_modify ( |x| * x -= 1 )
33
+ . or_insert ( -1 ) ;
34
+ }
35
+
36
+ let mut sum = 0 ;
37
+ let mut i = 0 ;
38
+ for ( k, v) in diff {
39
+ while i < n && people[ i] . 1 < k {
40
+ ret[ people[ i] . 0 ] += sum;
41
+ i += 1 ;
42
+ }
43
+ sum += v;
44
+ }
45
+
46
+ ret
47
+ }
48
+ }
You can’t perform that action at this time.
0 commit comments