Skip to content

Commit 16502d5

Browse files
Merge pull request #2806 from rmrt1n/695
Create 0695-max-area-of-island.rs
2 parents 561a161 + 12802e7 commit 16502d5

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

rust/0695-max-area-of-island.rs

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
impl Solution {
2+
pub fn max_area_of_island(grid: Vec<Vec<i32>>) -> i32 {
3+
fn dfs(grid: &mut Vec<Vec<i32>>, x: i32, y: i32) -> i32 {
4+
if x < 0
5+
|| y < 0
6+
|| x >= grid.len() as i32
7+
|| y >= grid[0].len() as i32
8+
|| grid[x as usize][y as usize] == 0
9+
{
10+
return 0;
11+
}
12+
13+
grid[x as usize][y as usize] = 0;
14+
15+
let mut count = 1;
16+
let directions: [(i32, i32); 4] = [(0, 1), (1, 0), (0, -1), (-1, 0)];
17+
18+
for (add_x, add_y) in directions {
19+
count += dfs(grid, x + add_x, y + add_y);
20+
}
21+
22+
count
23+
}
24+
25+
let mut max_area = 0;
26+
let mut new_grid = grid.clone();
27+
28+
for x in 0..grid.len() {
29+
for y in 0..grid[0].len() {
30+
if new_grid[x][y] == 1 {
31+
max_area = max_area.max(dfs(&mut new_grid, x as i32, y as i32));
32+
}
33+
}
34+
}
35+
36+
max_area
37+
}
38+
}

0 commit comments

Comments
 (0)