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.