当前位置:网站首页>【952. 按公因数计算最大组件大小】
【952. 按公因数计算最大组件大小】
2022-07-31 00:40:00 【千北@】
来源:力扣(LeetCode)
描述:
给定一个由不同正整数的组成的非空数组 nums ,考虑下面的图:
- 有
nums.length个节点,按从nums[0]到nums[nums.length - 1]标记; - 只有当
nums[i]和nums[j]共用一个大于 1 的公因数时,nums[i]和nums[j]之间才有一条边。
返回 图中最大连通组件的大小 。
示例 1:

输入:nums = [4,6,15,35]
输出:4
示例 2:
输入:nums = [20,50,9,63]
输出:2
示例 3:
输入:nums = [2,3,6,7,4,12,21,39]
输出:8
提示:
- 1 <= nums.length <= 2 * 104
- 1 <= nums[i] <= 105
- nums 中所有值都 不同
方法:并查集

代码:
class UnionFind {
public:
UnionFind(int n) {
parent = vector<int>(n);
rank = vector<int>(n);
for (int i = 0; i < n; i++) {
parent[i] = i;
}
}
void uni(int x, int y) {
int rootx = find(x);
int rooty = find(y);
if (rootx != rooty) {
if (rank[rootx] > rank[rooty]) {
parent[rooty] = rootx;
} else if (rank[rootx] < rank[rooty]) {
parent[rootx] = rooty;
} else {
parent[rooty] = rootx;
rank[rootx]++;
}
}
}
int find(int x) {
if (parent[x] != x) {
parent[x] = find(parent[x]);
}
return parent[x];
}
private:
vector<int> parent;
vector<int> rank;
};
class Solution {
public:
int largestComponentSize(vector<int>& nums) {
int m = *max_element(nums.begin(), nums.end());
UnionFind uf(m + 1);
for (int num : nums) {
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
uf.uni(num, i);
uf.uni(num, num / i);
}
}
}
vector<int> counts(m + 1);
int ans = 0;
for (int num : nums) {
int root = uf.find(num);
counts[root]++;
ans = max(ans, counts[root]);
}
return ans;
}
};
执行用时:196 ms, 在所有 C++ 提交中击败了71.01%的用户
内存消耗:75.2 MB, 在所有 C++ 提交中击败了27.54%的用户
author:LeetCode-Solution
边栏推荐
- Meeting OA project pending meeting, all meeting functions
- Mysql systemized JOIN operation example analysis
- Redis learning
- pytorch双线性插值
- software development design process
- C language force buckles the rotating image of the 48th question.auxiliary array
- Mysql体系化之JOIN运算实例分析
- Summary of MySQL database interview questions (2022 latest version)
- [In-depth and easy-to-follow FPGA learning 15---------- Timing analysis basics]
- Neural Network (ANN)
猜你喜欢

Mysql systemized JOIN operation example analysis

论文理解:“Designing and training of a dual CNN for image denoising“

mysql索引失效的常见9种原因详解

Jmeter参数传递方式(token传递,接口关联等)

限制字符绕过

C language force buckles the rotating image of the 48th question.auxiliary array

MySQL master-slave replication and read-write separation script - pro test available

小程序-全局数据共享

How to Add a Navigation Menu on Your WordPress Site

Shell编程之条件语句
随机推荐
Adding, deleting, modifying and checking the foundation of MySQL
Summary of MySQL database interview questions (2022 latest version)
Restricted character bypass
GO GOPROXY代理设置
【深度学习】Transformer模型详解
C language force buckles the rotating image of the 48th question.auxiliary array
加密传输过程
小程序-全局数据共享
go mode tidy出现报错go warning “all“ matched no packages
Error ER_NOT_SUPPORTED_AUTH_MODE Client does not support authentication protocol requested by serv
分布式系统的一致性与共识(1)-综述
【愚公系列】2022年07月 Go教学课程 017-分支结构之IF
【深入浅出玩转FPGA学习13-----------测试用例设计1】
MySQL数据库进阶篇
How to use joiplay emulator
Gabor滤波器学习笔记
ABC 261 F - Sorting Color Balls (reverse pair)
How to Repair Word File Corruption
Go study notes (84) - Go project directory structure
牛客网刷题训练(四)
