当前位置: 首页 > news >正文

省份数量00

题目链接

省份数量

题目描述


注意点

  • 1 <= n <= 200
  • isConnected[i][j] 为 1 或 0
  • isConnected[i][i] == 1
  • isConnected[i][j] == isConnected[j][i]

解答思路

  • 最初想到的是广度优先遍历,当某个城市不属于省份,需要从该城市开始,根据isConnected找到所有与其相连的城市,即可得到省份中有哪些城市,保存城市所属省份的信息,遍历完全部城市以后,即可得到连通分量的总数,即省份的总数
  • 另一个方法就是深度优先遍历找到相连的城市,找到一个属于新的省份的城市后,找到与之相连的城市,再根据相连的城市找到与相连城市相连的城市…找到省份中所有的城市。遍历完全部城市,找到所有省份

代码

方法一:

class Solution {public int findCircleNum(int[][] isConnected) {int res = 0;int n = isConnected.length;int[] province = new int[n];Deque<Integer> deque = new ArrayDeque<>();for (int i = 0; i < n; i++) {// 该城市已经属于某个省份if (province[i] != 0) {continue;}res++;deque.offerLast(i);// 找到与i相连的所有城市while (!deque.isEmpty()) {int row = deque.pollFirst();for (int j = 0; j < n; j++) {if (isConnected[row][j] == 1 && province[j] == 0) {province[j] = res;deque.offerLast(j);}}}}return res;}
}

方法二:

class Solution {public int findCircleNum(int[][] isConnected) {int res = 0;int n = isConnected.length;int[] province = new int[n];for (int i = 0; i < n; i++) {// 该城市已属于某个省份if (province[i] != 0) {continue;}res++;// 深度优先遍历找到属于该省份的城市dfs(isConnected, province, i);}return res;}public void dfs(int[][] isConnected, int[] province, int i) {if (province[i] != 0) {return;}province[i] = 1;for (int j = 0; j < province.length; j++) {if (isConnected[i][j] == 1) {dfs(isConnected, province, j);}}}
}

关键点

  • 深度优先遍历的思想
  • 广度优先遍历的思想
  • 需要保存城市属于某个省份的信息
http://www.lryc.cn/news/342458.html

相关文章:

  • Android Native内存泄漏检测方案详解
  • 有限单元法-编程与软件应用(崔济东、沈雪龙)【PDF下载】
  • 蓝桥杯练习系统(算法训练)ALGO-950 逆序数奇偶
  • uniapp踩坑 uni.showToast 和 uni.showLoading
  • BIGRU、CNN-BIGRU、CNN-BIGRU-ATTENTION、TCN-BIGRU、TCN-BIGRU-ATTENTION合集
  • 通过 Java 操作 redis -- 基本通用命令
  • Jenkins集成Kubernetes 部署springboot项目
  • 个股期权是什么期权?个股期权什么时候推出?
  • TCP UDP
  • PCIE协议-1
  • [C++][PCL]pcl安装包预编译包国内源下载地址
  • 海洋行业工业气体检测传感器的重要性
  • 免费在线录屏、无需注册、免费可用、无限制
  • 5V升9V2A升压恒压WT3231
  • Java中枚举类的使用详解
  • C++11 设计模式6. 建造者模式,也叫做生成器模式
  • GPS与精致农业 无人机应用 农业遥感 农业类
  • Kotlin注解简介
  • 代码随想录训练营
  • java中的变量、数据类型、人机交互
  • Python中的生成器是什么
  • 【Camera2完整流程分析四】从log角度分析CameraService启动流程
  • 基于SSM SpringBoot vue教务排课系统
  • 深入理解 LinkedList 及底层源码分析
  • 美易官方:英伟达业绩将难以撑起股价?
  • 超实用干货!FP独立站引流攻略
  • php之框架底层中间件模式开发实现、array_reduce的应用
  • fabric搭建生产网络
  • 聊聊 ASP.NET Core 中间件(二):中间件和筛选器的区别
  • Nginx配置Https缺少SSL模块