File tree 3 files changed +124
-0
lines changed
solution/0200-0299/0210.Course Schedule II
3 files changed +124
-0
lines changed Original file line number Diff line number Diff line change @@ -269,6 +269,49 @@ public class Solution {
269
269
}
270
270
```
271
271
272
+ ### ** Rust**
273
+
274
+ ``` rust
275
+ impl Solution {
276
+ pub fn find_order (num_courses : i32 , prerequisites : Vec <Vec <i32 >>) -> Vec <i32 > {
277
+ let n = num_courses as usize ;
278
+ let mut adjacency = vec! [vec! []; n ];
279
+ let mut entry = vec! [0 ; n ];
280
+ // init
281
+ for iter in prerequisites . iter () {
282
+ let (a , b ) = (iter [0 ], iter [1 ]);
283
+ adjacency [b as usize ]. push (a );
284
+ entry [a as usize ] += 1 ;
285
+ }
286
+ // construct deque & reslut
287
+ let mut deque = std :: collections :: VecDeque :: new ();
288
+ for index in 0 .. n {
289
+ if entry [index ] == 0 {
290
+ deque . push_back (index );
291
+ }
292
+ }
293
+ let mut result = vec! [];
294
+ // bfs
295
+ while ! deque . is_empty () {
296
+ let head = deque . pop_front (). unwrap ();
297
+ result . push (head as i32 );
298
+ // update degree of entry
299
+ for & out_entry in adjacency [head ]. iter () {
300
+ entry [out_entry as usize ] -= 1 ;
301
+ if entry [out_entry as usize ] == 0 {
302
+ deque . push_back (out_entry as usize );
303
+ }
304
+ }
305
+ }
306
+ if result . len () == n {
307
+ result
308
+ } else {
309
+ vec! []
310
+ }
311
+ }
312
+ }
313
+ ```
314
+
272
315
### ** ...**
273
316
274
317
```
Original file line number Diff line number Diff line change @@ -248,6 +248,49 @@ public class Solution {
248
248
}
249
249
```
250
250
251
+ ### ** Rust**
252
+
253
+ ``` rust
254
+ impl Solution {
255
+ pub fn find_order (num_courses : i32 , prerequisites : Vec <Vec <i32 >>) -> Vec <i32 > {
256
+ let n = num_courses as usize ;
257
+ let mut adjacency = vec! [vec! []; n ];
258
+ let mut entry = vec! [0 ; n ];
259
+ // init
260
+ for iter in prerequisites . iter () {
261
+ let (a , b ) = (iter [0 ], iter [1 ]);
262
+ adjacency [b as usize ]. push (a );
263
+ entry [a as usize ] += 1 ;
264
+ }
265
+ // construct deque & reslut
266
+ let mut deque = std :: collections :: VecDeque :: new ();
267
+ for index in 0 .. n {
268
+ if entry [index ] == 0 {
269
+ deque . push_back (index );
270
+ }
271
+ }
272
+ let mut result = vec! [];
273
+ // bfs
274
+ while ! deque . is_empty () {
275
+ let head = deque . pop_front (). unwrap ();
276
+ result . push (head as i32 );
277
+ // update degree of entry
278
+ for & out_entry in adjacency [head ]. iter () {
279
+ entry [out_entry as usize ] -= 1 ;
280
+ if entry [out_entry as usize ] == 0 {
281
+ deque . push_back (out_entry as usize );
282
+ }
283
+ }
284
+ }
285
+ if result . len () == n {
286
+ result
287
+ } else {
288
+ vec! []
289
+ }
290
+ }
291
+ }
292
+ ```
293
+
251
294
### ** ...**
252
295
253
296
```
Original file line number Diff line number Diff line change
1
+ impl Solution {
2
+ pub fn find_order ( num_courses : i32 , prerequisites : Vec < Vec < i32 > > ) -> Vec < i32 > {
3
+ let n = num_courses as usize ;
4
+ let mut adjacency = vec ! [ vec![ ] ; n] ;
5
+ let mut entry = vec ! [ 0 ; n] ;
6
+ // init
7
+ for iter in prerequisites. iter ( ) {
8
+ let ( a, b) = ( iter[ 0 ] , iter[ 1 ] ) ;
9
+ adjacency[ b as usize ] . push ( a) ;
10
+ entry[ a as usize ] += 1 ;
11
+ }
12
+ // construct deque & reslut
13
+ let mut deque = std:: collections:: VecDeque :: new ( ) ;
14
+ for index in 0 ..n {
15
+ if entry[ index] == 0 {
16
+ deque. push_back ( index) ;
17
+ }
18
+ }
19
+ let mut result = vec ! [ ] ;
20
+ // bfs
21
+ while !deque. is_empty ( ) {
22
+ let head = deque. pop_front ( ) . unwrap ( ) ;
23
+ result. push ( head as i32 ) ;
24
+ // update degree of entry
25
+ for & out_entry in adjacency[ head] . iter ( ) {
26
+ entry[ out_entry as usize ] -= 1 ;
27
+ if entry[ out_entry as usize ] == 0 {
28
+ deque. push_back ( out_entry as usize ) ;
29
+ }
30
+ }
31
+ }
32
+ if result. len ( ) == n {
33
+ result
34
+ } else {
35
+ vec ! [ ]
36
+ }
37
+ }
38
+ }
You can’t perform that action at this time.
0 commit comments