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

Popular posts from this blog

Node JS:Understanding bin in package.json.

Node.js: create an excel file with multiple tabs.

Node.js: Downloading a xml file from given url and reading its data elements.