LeetCode # 547. 省份数量

547. 省份数量

题目

有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。

省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。

给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连。

返回矩阵中 省份 的数量。
示例 1:
在这里插入图片描述

输入:isConnected = [[1,1,0],[1,1,0],[0,0,1]]
输出:2

示例 2:
在这里插入图片描述

输入:isConnected = [[1,0,0],[0,1,0],[0,0,1]]
输出:3

分析

递归,图,搜索,深度优先

图的深度优先,遍历邻接矩阵,当遇到未访问的节点,从这个节点开始深度优先搜索,如果搜索到和这个节点相连的节点,就继续从这个节点开始,遍历与它相连的且没防访问过的节点,直到同一个连通分量都被访问到,将访问过的节点标记已访问

题解

class Solution {public int findCircleNum(int[][] isConnected) {// 递归,图,搜索,深度优先// 图的深度优先,遍历邻接矩阵,当遇到未访问的节点,从这个节点开始深度优先搜索,如果搜索到和这个节点相连的节点,就继续深度优先搜索,直到同一个连通分量都被访问到,将访问过的节点标记已访问// 城市int cities = isConnected.length;// 是否访问过boolean[] visited = new boolean[cities];// 省份int provinces = 0;// 遍历,深度优先for(int i = 0; i < cities; i++){// 没访问过就去访问,然后省份加1if(!visited[i]){// 邻接矩阵,访问标记,所有城市,遍历的当前节点dfs(isConnected, visited, cities, i);provinces++;}}return provinces;}// 深度优先,放入当前节点,然后遍历当前节点所有相邻节点:(1,1)(2,2)(1,2)(2,1)public void dfs(int[][] isConnected, boolean[] visited, int cities, int i){for(int j = 0; j < cities; j++){// 判断是否与当前节点相连,且未访问过if(isConnected[i][j] == 1 && !visited[j]){visited[j] = true;dfs(isConnected, visited, cities, j);}}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/518473.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多线程系列(十七) -线程组介绍

一、简介 在之前的多线程系列文章中&#xff0c;我们陆陆续续的介绍了Thread线程类相关的知识和用法&#xff0c;其实在Thread类上还有一层ThreadGroup类&#xff0c;也就是线程组。 今天我们就一起来简单的聊聊线程组相关的知识和用法。 二、什么是线程组 线程组&#xff…

【格与代数系统】特殊的格

【格与代数系统】偏序关系、偏序集与全序集 【格与代数系统】基本概念和性质 格与其诱导的代数系统可以看作格的两种表现形式。 目录 分配格 有界格 有补格 布尔代数 例1 例2 对偶格 软代数 完备格 稠密性 优软代数 小结 分配格 设是格&#xff0c;若其上的两个二…

【Python】新手入门(8):什么是迭代?迭代的作用是什么?

【Python】新手入门&#xff08;8&#xff09;&#xff1a;什么是迭代&#xff1f;迭代有什么应用&#xff1f; &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】…

RK809-code切换不同模式

author daisy.skye的博客_CSDN博客-嵌入式,Qt,Linux领域博主 daisy.skye_嵌入式,Linux,Qt-CSDN博客daisy.skye擅长嵌入式,Linux,Qt,等方面的知识https://blog.csdn.net/qq_40715266?typeblog 默认模式下放音和收音都是关闭状态 130|rk3568_r:/ # tinymix -D 1 Mixer name: ro…

云渲染平台都开始涨价了?2024年性价比高的云渲染平台推荐

最近部分云渲染平台开始涨价&#xff0c;不论是通过调整机器性能&#xff0c;还是直接提价&#xff0c;都会对成本产生影响。这对已经习惯了平台价格的用户来说&#xff0c;并不是一件好事。这里举一些例子&#xff1a; 比如平台A&#xff0c;原“首小时渲染0.66元模式”已经下…

网络信息安全:nginx漏洞收集(升级至最新版本)

网络&信息安全&#xff1a;nginx漏洞收集&#xff08;升级至最新版本&#xff09; 一、风险详情1.1 nginx 越界写入漏洞(CVE-2022-41742)1.2 nginx 缓冲区错误漏洞(CVE-2022-41741)1.3 nginx 拒绝服务漏洞&#xff08;CNVD-2018-22806&#xff09; 二、nginx升级步骤 &…

高级运维工程师手把手教从0到1搭建一套linux服务器硬盘监控平台实战训练

高级运维工程师手把手教你获取当前服务器硬盘空间数据并写入MYSQL数据库监控表实战 一、前言 我们在日常工作生活中&#xff0c;经常遇到服务器硬盘爆满的事故&#xff0c;现在互联网的监控产品非常丰富&#xff0c;但是有些场景下不得不自己解决。有些特殊条件下不能用互联网…

【vue2项目总结】——动态渲染

文章目录 主页渲染封装接口页面调用传到子组件 搜索列表渲染根据关键字搜索分类id搜索 主页渲染 封装接口 封装准备接口 api/home.js import request from /utils/request// 获取首页数据 export const getHomeData () > {return request.get(/page/detail, {params: {p…

ThreeJs场景中添加视频

这节讲如何在threejs中添加一个视频的功能&#xff0c;在某些场景中可能会需要播放视频&#xff0c;比如在场景中方式一个大屏幕&#xff0c;大屏幕上需要播放视频&#xff0c;亦或者在场景中添加电视机的模型&#xff0c;电视机的画面上需要播放一些视频等。 其实添加视频和以…

Python读取influxDB数据库

1. influxDB连接 首先用InfluxDBStudio软件连接influxDB数据库来查看所有表&#xff1a; 2. 写sql语句来查询数据 然后和平时写sql查询语句一样&#xff0c;先创建连接client&#xff0c;然后调用其query函数来查询获取数据 self.client influxdb.InfluxDBClient(hostinflu…

Vue+SpringBoot打造校园疫情防控管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 学生2.2 老师2.3 学校管理部门 三、系统展示四、核心代码4.1 新增健康情况上报4.2 查询健康咨询4.3 新增离返校申请4.4 查询防疫物资4.5 查询防控宣传数据 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBoot…

制片管理工具:提高制片效率的必备工具

一、什么是制片管理工具 制片管理工具是一种为制片人提供支持和协助的软件或工具&#xff0c;并提供一种集中管理制作进度、任务分配、成本预算、资源管理和进度跟踪的方式。它可以帮助制片人在项目的开发、制作和发布方面更有效地进行规划和监督&#xff0c;确保整个流程能够…