Skip to main content

Number of Islands

MediumPremium

Given a 2D array binaryMatrix of 0s and 1s, implement a function getNumberOfIslands that returns the number of islands of 1s in binaryMatrix.

An island is defined as a group of adjacent values that are all 1s. A cell in binaryMatrix is considered adjacent to another cell if they are next to each either on the same row or column. Note that two values of 1 are not part of the same island if they’re sharing only a mutual "corner" (i.e. they are diagonally neighbors).

Explain and code the most efficient solution possible and analyze its time and space complexities.

Example

input: binaryMatrix = [ [0, 1, 0, 1, 0], [0, 0, 1, 1, 1], [1, 0, 0, 1, 0], [0, 1, 1, 0, 0], [1, 0, 1, 0, 1] ] output: 6 # since this is the number of islands in binaryMatrix. # See all 6 islands color-coded below.

img09

How would you traverse an undirected path?

If you're moving towards DFS/BFS - this will work, but it's not the preferred solution. Can you try a more iterative approach?

Watch for out of bounds indices!

Have you checked for duplicate island counts? Be sure to mark visited cells consistently to avoid redundancy.

What's the runtime of your solution? If it's more than O(N-M), then you can improve.