岛问题

简介: 题目描述:一个矩阵中只有0和1两种值,每个位置都可以和自己的上、下、左、右四个位置相连,如果有一片1连在一起,这个部分叫做一个岛,求一个矩阵中有多少个岛?举例:0 0 1 0 1 01 1 1 0 1 01 0 0 1 0 00 0 0 0 0 0这个矩阵中有三个岛。

题目描述:
一个矩阵中只有0和1两种值,每个位置都可以和自己的上、下、左、右
四个位置相连,如果有一片1连在一起,这个部分叫做一个岛,求一个
矩阵中有多少个岛?
举例:
0 0 1 0 1 0
1 1 1 0 1 0
1 0 0 1 0 0
0 0 0 0 0 0
这个矩阵中有三个岛。


解决思路:

  • 方法:主要使用感染函数,将1以及连接的1全都感染。
public class Islands {

    //判断岛的数量
    public int islandNum(int[][] m){
        if(m == null || m[0] == null)
            return 0;
        int N = m.length;
        int M = m[0].length;
        int res = 0;
        for(int i = 0; i < N; i++){
            for(int j = 0; j < M; j++){
                if(m[i][j] == 1){
                    res++;
                    infect(m, i, j, N, M);//感染函数
                }
            }
        }
        return res;
    }

    public void infect(int[][] m, int i, int j, int N, int M){
        if(i < 0 || i >= N || j < 0 || j >= M || m[i][j] != 1)
            return;
        m[i][j] = 2;
        //分别对上下左右感染
        infect(m, i + 1, j, N, M);
        infect(m, i - 1, j, N, M);
        infect(m, i, j + 1, N, M);
        infect(m, i, j - 1, N, M);
    }

    public static void main(String[] args) {
        int[][] m = {
                {0, 0, 1, 0, 1, 0},
                {1, 1, 1, 0, 1, 0},
                {1, 0, 0, 1, 0, 0},
                {0, 0, 0, 0, 0, 0}
        };
        Islands islands = new Islands();
        int num = islands.islandNum(m);
        System.out.println(num);
    }
}

目录
相关文章
|
存储 监控 安全
80%以上是冷数据!昆腾的数据归档之道
中国的冷、温、热数据分别占比80%、15%和5%,冷数据是最多的。而对于冷数据来说,计算不是常态,主要是存储。中国算力中心的“存力”相对不足,中国数据存储产业大有可为。
538 0
80%以上是冷数据!昆腾的数据归档之道
|
XML Shell 调度
Apache Oozie-- 实战操作--集成 hue- 定时调度配置|学习笔记
快速学习 Apache Oozie-- 实战操作--集成 hue- 定时调度配置
Apache Oozie-- 实战操作--集成  hue- 定时调度配置|学习笔记
|
NoSQL Redis
使用netty按照Redis协议发消息完成set key value 命令
使用netty按照Redis协议发消息完成set key value 命令
156 0
|
存储 NoSQL 安全
MyCat-简介-MyCat 引入 | 学习笔记
快速学习 MyCat-简介-MyCat 引入
MyCat-简介-MyCat 引入 | 学习笔记
|
缓存 NoSQL Redis
使用ServiceStack.Redis实现Redis数据读写
原文:使用ServiceStack.Redis实现Redis数据读写 User.cs实体类 public class User { public string Name { get; set; ...
1768 1
|
JavaScript 前端开发
完善博客园反对功能
[本文出自天外归云的博客园] 前言 博客园的推荐和反对功能是匿名的。 本文的思路和目的是:通过js脚本的形式让你知道给你文章点推荐或反对的人是谁。   做法 在你的博客园“管理-设置-页脚Html代码”中填写下面这段代码(以下js脚本的功能是让点反对的人给你的文章评论“我反对你的文章!”并附加一串随机数): window.
1425 0
|
3天前
|
人工智能 运维 安全
|
5天前
|
SpringCloudAlibaba 负载均衡 Dubbo
微服务架构下Feign和Dubbo的性能大比拼,到底鹿死谁手?
本文对比分析了SpringCloudAlibaba框架下Feign与Dubbo的服务调用性能及差异。Feign基于HTTP协议,使用简单,适合轻量级微服务架构;Dubbo采用RPC通信,性能更优,支持丰富的服务治理功能。通过实际测试,Dubbo在调用性能、负载均衡和服务发现方面表现更出色。两者各有适用场景,可根据项目需求灵活选择。
393 124
微服务架构下Feign和Dubbo的性能大比拼,到底鹿死谁手?
|
8天前
|
人工智能 JavaScript 测试技术
Qwen3-Coder入门教程|10分钟搞定安装配置
Qwen3-Coder 挑战赛简介:无论你是编程小白还是办公达人,都能通过本教程快速上手 Qwen-Code CLI,利用 AI 轻松实现代码编写、文档处理等任务。内容涵盖 API 配置、CLI 安装及多种实用案例,助你提升效率,体验智能编码的乐趣。
741 109