首页 > 编程语言 >每日OJ题_牛客_城市群数量_FloodFill_C++_Java

每日OJ题_牛客_城市群数量_FloodFill_C++_Java

时间:2024-10-26 23:17:31浏览次数:3  
标签:arr Java OJ int FloodFill ++ x2 x1 城市群

目录

牛客_城市群数量_BFS/并查集

题目解析

C++代码

Java代码


牛客_城市群数量_BFS/并查集

城市群数量_牛客题霸_牛客网 (nowcoder.com)

描述:

        给定一个 n 个节点的邻接矩阵 m。 节点定义为城市,如果 a 城市与 b 城市相连, b 与 c 城市相连,尽管 a 与 c 并不直接相连,但可以认为 a 与 c 相连,定义 a,b,c 是一个城市群。

矩阵 m[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,否则表示不相连。

请你找出共有多少个城市群。


题目解析

经典 floodfill 算法,可以用 dfs 或者 bfs 或并查集解决。

C++代码

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param m int整型vector<vector<>> 
     * @return int整型
     */
    int citys(vector<vector<int> >& m) {
        int n1 = m.size(), n2= m[0].size();
        vector<int> arr(n1, -1);
        auto findRoot = [&](int x)
        {
            while(arr[x] != -1)
            {
                x = arr[x];
            }
            return x;
        };
        for(int i = 0; i < n1; ++i)
        {
            for(int j = 0; j < n2; ++j)
            {
                if(m[i][j] == 1)
                {
                    int x1 = findRoot(i);
                    int x2 = findRoot(j);
                    if(x1 != x2) // x2合到x1
                    {
                        arr[x1] = arr[x2]; // 写OJ时少了这句,但也能过
                        arr[x2] = x1;
                    }
                }
            }
        }
        int res = 0;
        for(auto& e : arr)
        {
            if(e == -1)
                ++res;
        }
        return res;
    }
};

Java代码

import java.util.*;
public class Solution
{
    int n;
    boolean[] vis = new boolean[210];
    public int citys (ArrayList<ArrayList<Integer>> m) 
    {
        n = m.size();
        int ret = 0;
        for(int i = 0; i < n; i++)
        {
            if(vis[i] == false)
            {
                ret++;
                dfs(m, i);
            }
        }
        return ret;
    }
    public void dfs(ArrayList<ArrayList<Integer>> m, int pos)
    {
        vis[pos] = true;
        for(int i = 0; i < n; i++)
        {
            if(m.get(pos).get(i) == 1 && vis[i] == false)
            {
                dfs(m, i);
            }
        }
    }
}

标签:arr,Java,OJ,int,FloodFill,++,x2,x1,城市群
From: https://blog.csdn.net/GRrtx/article/details/143167636

相关文章

  • JAVA毕设2533基于web的电影购票系统的设计与实现
    项目包含:源码,文档,讲解视频运行环境:推荐jdk1.8开发工具:Eclipse、MyEclipe以及idea(推荐)操作系统:windows108G内存以上(其他windows)浏览器:GoogleChrome(推荐)、Edge、360浏览器;数据库:MySQL5.7;数据库可视化工具:NavicatPremium推荐)以及其他Navicat版本tomcat:6.0或以上......
  • 再学HBase,关于HBase的一些基础知识 | 如何集成在java中
    HBase简介在使用方面:HBase是一种数据仓库,是基于hdfs的nosql数据源,数据都是存放在hdfs上的,不需要像hive一样再去运行MapReduce进行长时间运算。特点:在phonenix/hive的集成下才可以支持sql,本身是有自己的dql语言的。具有一级索引rowKey,基于一级索引查询hbase的表都是物理表,......
  • Java实现答题判题程序
    一、前言本文介绍了如何使用Java设计实现答题程序,模拟一个小型的测试,要求输入题目信息和答题信息,根据输入题目信息中的标准答案判断答题的结果。本次编程任务通过三次作业实现了从基本的题目管理到完整的测试系统的设计。第一次作业主要实现了题目信息、试卷信息和答卷信息的基......
  • 【Java】初识Java
    初识Java1.Java语言概述1.1Java是什么1.2Java语言重要性1.3Java语言发展简史1.4Java语言特性2.初识Java程序入口之main方法2.1main方法示例2.2运行Java程序3.注释、标识符、关键字3.1基本规则3.2注释规范4.标识符5.关键字1.Java语言概述1.1Java是什么......
  • 【Java】数据类型与变量
    数据类型与变量1.字面常量2.数据类型3.变量3.1变量概念3.2语法格式3.3整型变量3.3.1整型变量3.3.2长整型变量3.3.3短整型变量3.3.4字节型变量3.4浮点型变量3.4.1双精度浮点型3.4.2单精度浮点型3.5字符型变量3.6布尔型变量3.7类型转换3.7.1自动类型转......
  • 挑战Java面试题复习第1天,坚持就是胜利
    面向对象和面向过程的区别面向过程:步骤分析:将问题分解为一系列步骤。函数实现:用函数逐步实现这些步骤。调用执行:在需要时调用这些函数。高性能:适合对性能要求高的场合,如单片机和嵌入式开发。面向对象:对象分解:将问题分解为多个对象。行为描述:对象描述事物在问题解决过程中的行为......
  • 10.26如何进行简单的java连接数据库
    1建表1.win+R输入cmd输入mysql-uroot-p输入密码2.查看数据库原本的成员showdatabases3.创建一个新表,如studentcreatedatabasestudent;4.使用usestudent;createtablestudent(idint,namevarchar(10));5.插入insertintostudentvalue(1,'张三');in......
  • java-BLOG-1
    1.前言第一二个题目集除了最后一个题目以及第三个题目集的第一个题目都比较简单,只要按照题目要求,创建相应的类,题目比较简单一般只需要创建一个类和相应的一些属性、方法,按照输入输出的要求进行创建就行。前两个题目集只需要做对相应的输出就能做对,而第三个题目集重点增加了对输入......
  • jsp ssm 校园新闻管理系统 新闻发布系统 news 项目源码 web java
    一、项目简介本项目是一套基于SSM的校园新闻管理系统,主要针对计算机相关专业的和需要项目实战练习的Java学习者。包含:项目源码、数据库脚本、软件工具等。项目都经过严格调试,确保可以运行!二、技术实现​后端技术:Spring、SpringMVC、MyBatis前端技术:JSP、HTML、CSS、Ja......
  • jsp ssm 智能图书馆图书推荐系统 图书管理 项目源码 web java
    一、项目简介本项目是一套基于SSM的智能图书馆图书推荐系统,主要针对计算机相关专业的和需要项目实战练习的Java学习者。包含:项目源码、数据库脚本、软件工具等。项目都经过严格调试,确保可以运行!二、技术实现​后端技术:Spring、SpringMVC、MyBatis前端技术:JSP、HTML、C......