Challenge Statement

  • Given an m x n 2D binary grid grid representing a map of ‘1’s (land) and ‘0’s (water), return the number of islands.
  • An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically. You may assume all four grid edges are surrounded by water.
  • This challenge corresponds to LeetCode #200.

Constraints

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

Example 1:

Input: grid = [

  [“1”, “1”, “1”, “1”, “0”],

  [“1”, “1”, “0”, “1”, “0”],

  [“1”, “1”, “0”, “0”, “0”],

  [“0”, “0”, “0”, “0”, “0”]

]

Output: 1

Example 2:

Input: grid = [

  [“1”, “1”, “0”, “0”, “0”],

  [“1”, “1”, “0”, “0”, “0”],

  [“0”, “0”, “1”, “0”, “0”],

  [“0”, “0”, “0”, “1”, “1”]

]

Output: 3

Solution

Below is my solution and some test cases. The solution has a linear time complexity of O(n) and a linear space complexity O(n), where n is the number of cells in the grid.