LeetCode: Number of Islands Solution
To be consistent, first find out how to make it easyApproach
After detecting a piece of an island (cell with value 1
), recursively spread through all vertical and horizontal directions to discover a full island
Could use any ways to mark the visited state
Implementation
1var numIslands = function (grid) {2 const [m, n] = [grid.length, grid[0].length]34 let res = 056 const isValidCell = (i, j) => 0 <= i && i < m && 0 <= j && j < n78 const recursion = (i, j) => {9 if (isValidCell(i, j) && grid[i][j] === "1") {10 grid[i][j] = 011 recursion(i + 1, j)12 recursion(i, j + 1)13 recursion(i - 1, j)14 recursion(i, j - 1)15 return16 }17 }1819 for (let i = 0; i < m; i++) {20 for (let j = 0; j < n; j++) {21 if (grid[i][j] === "1") {22 recursion(i, j)23 res++24 }25 }26 }2728 return res29}
References
Comments
Loading comments...
Tags
leetcode
array
matrix
dfs
recursion
Apply and earn a $2,500 bonus once you're hired on your first job!
Clients from the Fortune 500 to Silicon Valley startups
Choose your own rate, get paid on time
From hourly, part-time, to full-time positions
Flexible remote working environment
A lot of open JavaScript jobs!!
Fact corner: Referred talent are 5x more likely to pass the Toptal screening process than the average applicant.
Still hesitate? Read HoningJS author's guide on dealing with Toptal interview process.
Next Post
LeetCode: Happy Number
Use a Set to detect cycle
Previous Post
LeetCode: Validate Binary Search Tree
Traverse in-order and validate the traversed result