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