#695
Medium Algorithms Max area of island
Array Depth-First Search Breadth-First Search Union-Find Matrix
73.8% acceptance
Feb 20, 2026
10575
221
Given an m x n binary matrix grid, return the maximum area of an island.
Solution
Rust
Time O(n²)
Space O(n)
impl Solution {
pub fn max_area_of_island(mut grid: Vec<Vec<i32>>) -> i32 {
let m = grid.len();
let n = grid[0].len();
let mut max_area = 0;
for i in 0..m {
for j in 0..n {
if grid[i][j] == 1 {
let area = Self::dfs(&mut grid, i, j, m, n);
max_area = max_area.max(area);
}
}
}
max_area
}
fn dfs(grid: &mut Vec<Vec<i32>>, r: usize, c: usize, m: usize, n: usize) -> i32 {
if r >= m || c >= n || grid[r][c] != 1 { return 0; }
grid[r][c] = 0;
let mut area = 1;
if r > 0 { area += Self::dfs(grid, r - 1, c, m, n); }
area += Self::dfs(grid, r + 1, c, m, n);
if c > 0 { area += Self::dfs(grid, r, c - 1, m, n); }
area += Self::dfs(grid, r, c + 1, m, n);
area
}
}