Skip to main content
Back to problems
#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)
LeetCode
solution.rs
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
  }
}