给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。

    岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。

    此外,你可以假设该网格的四条边均被水包围。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/number-of-islands
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    示例 1:

    1. 输入:grid = [
    2. ["1","1","1","1","0"],
    3. ["1","1","0","1","0"],
    4. ["1","1","0","0","0"],
    5. ["0","0","0","0","0"]
    6. ]
    7. 输出:1
    8. 来源:力扣(LeetCode
    9. 链接:https://leetcode-cn.com/problems/number-of-islands
    10. 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    示例 2:

    1. 输入:grid = [
    2. ["1","1","0","0","0"],
    3. ["1","1","0","0","0"],
    4. ["0","0","1","0","0"],
    5. ["0","0","0","1","1"]
    6. ]
    7. 输出:3
    8. 来源:力扣(LeetCode
    9. 链接:https://leetcode-cn.com/problems/number-of-islands
    10. 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    答案

    1. function numIslands (grid) {
    2. let num =0;
    3. function overturn(i, j) {
    4. if (i<0||j<0||i>grid.length-1||j>grid[0].length-1) return
    5. if (grid[i][j] === "1") {
    6. grid[i][j] = "0"
    7. overturn(i, j+1)
    8. overturn(i, j-1)
    9. overturn(i+1, j)
    10. overturn(i-1, j)
    11. }
    12. }
    13. if (grid & grid.length) {
    14. for (let i =0; i<grid.length;i++) {
    15. for (let j =0; j< grid.length; j++) {
    16. if (grid[i][j] === "1") {
    17. num ++
    18. overturn(i,j)
    19. }
    20. }
    21. }
    22. }
    23. }