### Diwali Data Structure Famous Problem

Number of Islands

Given an `m x n`

2D binary grid `grid`

which represents 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 edges of the grid are all surrounded by water.

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

Constraints:

`m == grid.length`

`n == grid[i].length`

`1 <= m, n <= 300`

`grid[i][j]`

is`'0'`

or`'1'`

.

**Solution Javascript:**

var grid = [ ["1","1","0"], ["0","1","0"], ] const numIslands = (grid) => { let count = 0 // the counted islands //Go though each cell of the 2d array/grid for(let row = 0; row < grid.length; row++){ for(let col = 0; col < grid[row].length; col ++){ if(grid[row][col] == '1'){ count ++ explore(row,col, grid) } } } return count } // Takes a cell in a grid with a “1” , turns it into a “0” and explores (DFS) any of the left, right, up, down 1’s function explore(row, col, grid){ //Let's return IF // row < 0 OR col < 0 OR row is out of bounds(meaning the row is larger than the number of arrays in the 2d array) OR col is at/out of bounds (meaning the current col is at/over the number of elements a row has.) if (row < 0 || col < 0 || row >= grid.length || col >= grid[row].length || grid[row][col] === '0') { return } //Otherwise, we should explore it! //First let's set the current spot to "0" grid[row][col]='0' //Possibilites: // 1) 1 to the right, left, top, bottom //right explore(row, col+1, grid) //Left explore(row, col-1, grid) //Down explore(row+1, col, grid) //Up explore(row-1, col, grid) } numIslands(grid);

## Comments

## Post a Comment