JSFiddle - React, Tailwind, and code Playground
JavaScript
function getIslandAndSink(arr, x, y) {
if (x < 0 || x >= arr.length || y < 0 || y >= arr[0].length) return 0;
if (arr[x][y] !== "1") { // not an island
return 0;
} else {
arr[x][y] = ".";
[-1, 1].forEach( delta => getIslandAndSink(arr, x + delta, y) );
[-1, 1].forEach( delta => getIslandAndSink(arr, x, y + delta) );
return 1;
}
}
var numIslands = function(grid) {
var i, j, count = 0;
grid = grid.map( s => s.split("") )
for (i = 0; i < grid.length; i++) {
for (j = 0; j < grid[i].length; j++) {
count += getIslandAndSink(grid, i, j)
}
}
return count;
};
console.log(numIslands(["11110","11010","11000","00000"]));
console.log(numIslands(["11110","11010","11000","00001"]));
console.log(numIslands(["11110","11010","11000","00101"]));