Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 83b9b3b

Browse files
authored
feat: add rust solution to lc problem:No.0210 (#1595)
No.0210.Course Schedule II
1 parent ef737e6 commit 83b9b3b

File tree

3 files changed

+124
-0
lines changed

3 files changed

+124
-0
lines changed

‎solution/0200-0299/0210.Course Schedule II/README.md‎

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,49 @@ public class Solution {
269269
}
270270
```
271271

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+
272315
### **...**
273316

274317
```

‎solution/0200-0299/0210.Course Schedule II/README_EN.md‎

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,49 @@ public class Solution {
248248
}
249249
```
250250

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+
251294
### **...**
252295

253296
```
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
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+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /