Journal Archive

/**
 * @param {number[][]} grid
 * @return {number}
 */
var maxAreaOfIsland = function(grid) {
    let rows = grid.length;
    let columns = grid[0].length;
    let visit = new Set();
    
    function dfs(r, c) {
        if (r < 0 || r >= rows || c < 0 || c >= columns || grid[r][c] === 0 || visit.has(`${r},${c}`)) return 0;
        
        visit.add(`${r},${c}`);
        
        let area = (1 + dfs(r + 1, c) + dfs(r - 1, c) + dfs(r, c + 1) + dfs(r, c - 1));
        
        return area;
    }
    let maxArea = 0;
    for (let i = 0; i < rows; i++) {
        for (let j = 0; j < columns; j++) {
            maxArea = Math.max(maxArea, dfs(i,j));
        }
    }
    return maxArea;
    
};

Day 16: Solving one of LeetCode problems

695. Max Area of Island Difficulty - Medium

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
        

 

Constraints:

  • m == grid.length
  • n == grid[i].length
  • 1 <= m, n <= 50
  • grid[i][j] is either 0 or 1.