华为OJ-岛屿个数问题_华为 给定01矩阵 求不同岛屿的数量-程序员宅基地

技术标签: algorithm  

题目:岛屿的个数

给一个01矩阵,求不同的岛屿的个数。

0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛。我们只考虑上下左右为相邻。

样例

在矩阵:

[
  [1, 1, 0, 0, 0],
  [0, 1, 0, 0, 1],
  [0, 0, 0, 1, 1],
  [0, 0, 0, 0, 0],
  [0, 0, 0, 0, 1]
]

中有 3 个岛.

解题:

programcreek看到是根据深度优先算法

对某个位置(i,j)

当是1 的时候,是岛屿,该位置设为 0 ,并将四周的 1 设置为 0,这样就是递归思想了

当是0的时候,不是岛屿,寻找下一个位置

Java程序:

public class GetIslandNum {
    public static int numIslands(boolean[][] grid) {
        // Write your code here
        int m = grid.length;
        if(m==0)
            return 0;
        int count = 0;
        int n = grid[0].length;
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(grid[i][j]==true){
                    dfs(grid,i,j);
                    count++;
                }
            }
        }
        return count;
    }
    public static void dfs(boolean[][]grid,int i,int j){
        if(i<0 || j<0||i>=grid.length || j>=grid[0].length)
            return ;
        if(grid[i][j]==true){
            grid[i][j]= false;
            dfs(grid,i-1,j);
            dfs(grid,i+1,j);
            dfs(grid,i,j-1);
            dfs(grid,i,j+1);
        }
        
    }
    public static void main(String[] args){
//    	Scanner in = new Scanner(System.in);
    	boolean[][] grid = {
      {true, true, false, false, false},
    			            {false, true, false, false, true},
    			            {false, false, false, true, true},
    			            {false, false, false, false, false},
    			            {true, false, false, false, true},
    			            };
    	System.out.println(numIslands(grid));
    }
}


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Hadas_Wang/article/details/52479918

智能推荐

进度条评论-程序员宅基地

文章浏览阅读117次。进度条评论

zsh: command not found: ohpm-程序员宅基地

文章浏览阅读1.5k次,点赞12次,收藏10次。找到路径类似如下并记录,需配置到配置文件中。2、修改 .bash_profile 文件。_zsh: command not found: ohpm

python如何使用session和cookie_python requests增加cookie的方法-程序员宅基地

文章浏览阅读1.1k次。一、有关cookie我之前写过一篇博文《python pycurl模块》,在其中有提到pycurl 有将cookie保存在该文件中,并允许跟踪来源,其他请求会直接调用该cookie文件。这个适用于大多数的应用场景,不过有时候新的cookie内容并不会在响应头中记录到cookie文件中,比如session key之类的,其一般会在响应正文里。在直接后面的请求时,需要手动的加入到请求的cookie头信..._python pycurl使用cookie的方法

JS复制功能实现_js 复制订单号-程序员宅基地

文章浏览阅读458次。// 订单编号复制 orderNoCopy(){ let input = document.createElement('input'); input.value = '1111111';//要复制的文本 document.body.appendChild(input); input.select(); document.execCommand('Copy'..._js 复制订单号

第五天-J-UVA-1193-贪心-区间覆盖_假设陆地的海岸线是一条无限延长的直线海岛是一个个的点现需要在海岸线上安装雷-程序员宅基地

文章浏览阅读199次。poj1328题意:假设陆地的海岸线是一条无限延长的直线,海岛是一个个的点,现需要在海岸线上安装雷达,使整个雷达系统能够覆盖到所有的海岛。雷达所能覆盖的区域是以雷达为圆心半径为d的圆,我们用指标坐标系来描述,海岸线就是x轴,现在给出每个海岛的坐标与雷达的半径d,请编写一个程序计算出最少需要多少个雷达才能够将所有海岛全部覆盖?思路:知道小岛位置,和雷达半径,那么以小岛为圆心,雷达覆盖半径为半..._假设陆地的海岸线是一条无限延长的直线海岛是一个个的点现需要在海岸线上安装雷

CentOS6.5 DHCP服务器搭建_centos6 网卡 dhcp-程序员宅基地

文章浏览阅读466次,点赞2次,收藏3次。安装DHCP# yum install dhcp永久关闭iptables防火墙  (实验环境下建议永久)# chkconfig iptables off自动分配方式:DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。..._centos6 网卡 dhcp

随便推点

jsp页面中窗口关闭,退出的方式学习_jsp 关闭窗口 无效-程序员宅基地

文章浏览阅读781次。1.采用javascript 复制代码 代码如下: 或者:复制代码 代码如下: 2.采用HttpSession 清空session, 退出当前登录.复制代码 代码如下:Java免费学习 Java自学网 http://www.javalearns.com退出logout.jsp 主要代_jsp 关闭窗口 无效

AUTOSAR学习之simulink中SWC的接口_swc接口-程序员宅基地

文章浏览阅读1.5k次,点赞2次,收藏6次。AUTOSAR学习之simulink对接SWC的接口_swc接口

html页面调用高德地图,html前端使用高德地图入门教程-程序员宅基地

文章浏览阅读2.3k次。文章目录开始准备工作注册Key前期页面上的准备插件使用插件使用步骤引入插件定位自定义地图显示位置和缩放级别添加实时路况图层获取定位信息(需要使用插件)浏览器定位IP定位获取当前城市信息覆盖物添加覆盖物获取覆盖物覆盖物的操作图层设置图层获取图层移除图层3D地图未完待续...开始准备工作注册Key如果开发者账号包括Key已经有了,请忽略此步骤首先,注册开发者账号,成为高德开放平台开发者登陆之后,在进入..._html对接地图

归并排序-迭代法与递归法_java归并排序迭代器-程序员宅基地

文章浏览阅读1.7k次。注意:这个方法不改变原数组,而是生成一个新的数组。Array.prototype.mergeSort = function(fun/*, thisArg*/) { 'use strict'; if (this === void 0 || this === null) { throw new TypeError(); } if (fun && typeof fun !==_java归并排序迭代器

基于工业智能网关的SL651水文监测系统解决方案_智能网关监测系统-程序员宅基地

文章浏览阅读152次。用户通过手机或电脑登录云平台,就能查看各个站点的水文信息,包括实时数据和历史数据的可视化图表,帮助对水文状况进行研判,了解哪个站点水位超限或降雨量多大,接收报警信息并及时采取措施,及时响应联动应急行动,通过筑堤蓄洪等操作,避免水文灾害带来更多的损失和破坏。工业智能网关可以采集雨量计、水位计、流量计以及摄像头等设备数据,支持5G、4G、WIFI、以太网等上网方式,从而在云平台实现流量、水位、降雨量等数据的在线监测,并在超出安全区间时自动报警,保证水文治理工作的有序开展。_智能网关监测系统

VScode连接本地Docker_vscode docker-程序员宅基地

文章浏览阅读1w次,点赞10次,收藏27次。在ubuntu中,使用本地的vscode登陆到docker内的文件夹_vscode docker

推荐文章

热门文章

相关标签