Skip to content

Commit 5b81255

Browse files
committed
feat: add rust solution to lc problem: No.0547
No.0547.Number of Provinces
1 parent 0caa4cb commit 5b81255

File tree

3 files changed

+85
-0
lines changed

3 files changed

+85
-0
lines changed

solution/0500-0599/0547.Number of Provinces/README.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,36 @@ func findCircleNum(isConnected [][]int) int {
361361
}
362362
```
363363

364+
### **Rust**
365+
366+
```rust
367+
impl Solution {
368+
fn dfs(is_connected: &mut Vec<Vec<i32>>, vis: &mut Vec<bool>, i: usize) {
369+
vis[i] = true;
370+
for j in 0..is_connected.len() {
371+
if vis[j] || is_connected[i][j] == 0 {
372+
continue;
373+
}
374+
Self::dfs(is_connected, vis, j);
375+
}
376+
}
377+
378+
pub fn find_circle_num(mut is_connected: Vec<Vec<i32>>) -> i32 {
379+
let n = is_connected.len();
380+
let mut vis = vec![false; n];
381+
let mut res = 0;
382+
for i in 0..n {
383+
if vis[i] {
384+
continue;
385+
}
386+
res += 1;
387+
Self::dfs(&mut is_connected, &mut vis, i);
388+
}
389+
res
390+
}
391+
}
392+
```
393+
364394
### **...**
365395

366396
```

solution/0500-0599/0547.Number of Provinces/README_EN.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,36 @@ func findCircleNum(isConnected [][]int) int {
284284
}
285285
```
286286

287+
### **Rust**
288+
289+
```rust
290+
impl Solution {
291+
fn dfs(is_connected: &mut Vec<Vec<i32>>, vis: &mut Vec<bool>, i: usize) {
292+
vis[i] = true;
293+
for j in 0..is_connected.len() {
294+
if vis[j] || is_connected[i][j] == 0 {
295+
continue;
296+
}
297+
Self::dfs(is_connected, vis, j);
298+
}
299+
}
300+
301+
pub fn find_circle_num(mut is_connected: Vec<Vec<i32>>) -> i32 {
302+
let n = is_connected.len();
303+
let mut vis = vec![false; n];
304+
let mut res = 0;
305+
for i in 0..n {
306+
if vis[i] {
307+
continue;
308+
}
309+
res += 1;
310+
Self::dfs(&mut is_connected, &mut vis, i);
311+
}
312+
res
313+
}
314+
}
315+
```
316+
287317
### **...**
288318

289319
```
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
impl Solution {
2+
fn dfs(is_connected: &mut Vec<Vec<i32>>, vis: &mut Vec<bool>, i: usize) {
3+
vis[i] = true;
4+
for j in 0..is_connected.len() {
5+
if vis[j] || is_connected[i][j] == 0 {
6+
continue;
7+
}
8+
Self::dfs(is_connected, vis, j);
9+
}
10+
}
11+
12+
pub fn find_circle_num(mut is_connected: Vec<Vec<i32>>) -> i32 {
13+
let n = is_connected.len();
14+
let mut vis = vec![false; n];
15+
let mut res = 0;
16+
for i in 0..n {
17+
if vis[i] {
18+
continue;
19+
}
20+
res += 1;
21+
Self::dfs(&mut is_connected, &mut vis, i);
22+
}
23+
res
24+
}
25+
}

0 commit comments

Comments
 (0)