Leetcode•Oct 06, 2025
Max Area of Island
Hazrat Ali
Leetcode
You are given an m x n binary matrix grid. An island is a group of 1's (representing land) connected 4-directionally (horizontal or vertical.) You may assume all four edges of the grid are surrounded by water.
The area of an island is the number of cells with a value 1 in the island.
Return the maximum area of an island in grid. If there is no island, return 0.
Example 1:

Input: grid = [[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1,1,0,1,0,0,0,0,0,0,0,0],[0,1,0,0,1,1,0,0,1,0,1,0,0],[0,1,0,0,1,1,0,0,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,1,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,0,0,0,0,0,0,1,1,0,0,0,0]] Output: 6 Explanation: The answer is not 11, because the island must be connected 4-directionally.
Example 2:
Input: grid = [[0,0,0,0,0,0,0,0]] Output: 0
Solution
/**
* @param {number[][]} grid
* @return {number}
*/
const maxAreaOfIsland = grid => {
const m = grid.length;
const n = grid[0].length;
let max = 0;
for (let i = 0; i < m; i++) {
for (let j = 0; j < n; j++) {
if (grid[i][j] === 1) {
const area = dfs(grid, i, j);
max = Math.max(max, area);
}
}
}
return max;
};
const dfs = (grid, i, j) => {
const dx = [0, 0, -1, 1];
const dy = [-1, 1, 0, 0];
grid[i][j] = 0;
let count = 1;
for (let k = 0; k < 4; k++) {
const x = i + dx[k];
const y = j + dy[k];
if (x < 0 || x >= grid.length || y < 0 || y >= grid[0].length || grid[x][y] === 0) {
continue;
}
count += dfs(grid, x, y);
}
return count;
};