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

leetcode0547. 省份数量-medium

1 题目:省份数量

官方标定难度:中

有 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

提示:

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

2 solution

采用并查集,不断合并存在连接的两个集合即可

代码

class Solution {
public:int find(int x, vector<int> &f) {if (f[x] == x) return x;return f[x] = find(f[x], f);}int findCircleNum(vector<vector<int>> &isConnected) {int n = isConnected.size();vector<int> f(n);int m = n;for (int i = 0; i < n; i++) f[i] = i;for (int i = 0; i < n; i++) {for (int j = i + 1; j < n; j++) {if (isConnected[i][j]) {int f1 = find(i, f);int f2 = find(j, f);if (f1 != f2) {f[f1] = f2;m--;}}}}return m; 
}
};

结果

在这里插入图片描述

相关文章:

  • 报告分享 | 模型上下文协议(MCP):实现大模型与外部工具的标准化交互
  • L1-6 大勾股定理(PTA)
  • Web三漏洞学习(其二:sql注入)
  • Chat2DB 数据库客户端邀请码
  • 智能外呼系统:企业数字营销的AI新引擎
  • 【网络篇】UDP协议的封装分用全过程
  • CSS标签选择器与类选择器
  • 蓝桥杯备赛笔记(嵌入式)
  • 动捕数据手套:灵巧手与机器臂开发训练的“智能密钥”
  • 512天,倔强生长:一位技术创作者的独白
  • 完全无网络环境的 openEuler 系统离线安装 ClamAV 的详细步骤
  • 计算机网络面经
  • 经典算法 判断一个图是不是树
  • Java——方法
  • RNN - 序列模型
  • 【经验记录贴】使用配置文件提高项目的可维护性
  • Android LiveData学习总结(源码级理解)
  • (小白0基础) 微调deepseek-8b模型参数详解以及全流程——训练篇
  • Spark-sql编程
  • (二)Graspnet在mujoco的仿真复现(操作记录)
  • 国家新闻出版署:4月共118款国产网络游戏获批
  • 被指违反代理协议遭南航暂停售票资格, 去哪儿网:今起恢复
  • 广西气象干旱面积97.5%,影响人畜饮水、农业生产
  • 北京理工大学解除宫某聘用关系,该教师被指涉嫌骚扰猥亵学生
  • 美国海关新规致跨境包裹延误,DHL暂停超800美元对美个人货运
  • 同比增长4.2%!一季度全国财政支出持续增长