当前位置: 首页 > 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的仿真复现(操作记录)
  • 上海科创再出发:“造星”的城和“摘星”的人
  • 国台办:“台独”是绝路,外人靠不住
  • 王星昊再胜连笑,夺得中国围棋天元赛冠军
  • 美媒:受关税政策影响,美国电商平台近千种商品平均涨价29%
  • 上海明天起进入“升温通道”,五一假期冲刺33℃
  • 商务部:将积极会同相关部门加快推进离境退税政策落实落地