zoukankan      html  css  js  c++  java
  • 刷题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;
        }
    };
    

      

  • 相关阅读:
    winform导入导出excel,后台动态添加控件
    asp.net 导入excel文件
    asp.net gridview动态添加列,并获取其数据;
    中转Http请求
    窗体托盘后台运行
    后台程序完成指定任务
    死锁查看
    异步等待(ManualResetEvent
    C#后台程序重启IIS,发邮件通知
    mybatis入门视频总结
  • 原文地址:https://www.cnblogs.com/liu-xin1995/p/12739987.html
Copyright © 2011-2022 走看看