• 刷题80——岛屿数量


    119.岛屿数量

    题目链接

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/number-of-islands

    题目描述

    给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。

    示例 1:

    输入:
    11110
    11010
    11000
    00000

    输出: 1
    示例 2:

    输入:
    11000
    11000
    00100
    00011

    输出: 3

    关键技术

    深度优先搜索(DFS)

    题目分析

    1. 当前位置如果是”1“的时候,就开始搜索”1“附近的”1“,找到一个”1“,计数加1,并把”1“置为0,可以标记已经搜索过了;
    2. 搜索方向为当前位置不超过边界的上下左右四个方向;
    3. 注意边界判断
    /**
     * @param {character[][]} grid
     * @return {number}
     */
    var numIslands = function(grid) {
        if(grid && grid[0]){
            let x = grid.length;
            let y = grid[0].length;
            let num = 0;
            for(let i=0; i<x; i++){
                for(let j=0; j<y; j++){
                    if(grid[i][j] === '1'){  
                        num++;
                        count(i,j);
                    }
                }
            }
    
            function count(i,j){
                if(i<0 || i>x-1 || j<0 || j>y-1) return 0
                if(grid[i][j] === '1'){ 
                    grid[i][j] = 0;
                    count(i-1,j);
                    count(i,j-1);
                    count(i+1,j);
                    count(i,j+1);
                }
            }
            return num;
        }else{
            return 0;
        }
    };
    

      

  • 相关阅读:
    uploadify上传文件代码
    事务处理拼接sql语句对数据库的操作.异常回滚
    Scrum【转】
    Redis
    mybatis
    Spring MVC
    IOC的理解(转载)
    spring IOC与AOP
    git
    python基础2
  • 原文地址:https://www.cnblogs.com/liu-xin1995/p/12739987.html
Copyright © 2020-2023  润新知