当前位置:网站首页>【952. Calculate the maximum component size according to the common factor】
【952. Calculate the maximum component size according to the common factor】
2022-07-31 00:50:00 【[email protected]】
来源:力扣(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
版权声明
本文为[[email protected]]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/212/202207310039478432.html
边栏推荐
- 查看zabbix-release-5.0-1.el8.noarch.rpm包内容
- WEB安全基础 - - -漏洞扫描器
- Neural Network (ANN)
- typescript16-void
- Jetpack Compose learning (8) - State and remeber
- typescript10-常用基础类型
- C语言力扣第48题之旋转图像。辅助数组
- [In-depth and easy-to-follow FPGA learning 13---------Test case design 1]
- This project is so geeky
- Thesis understanding: "Designing and training of a dual CNN for image denoising"
猜你喜欢

牛客网刷题训练(四)

Error occurred while trying to proxy request The project suddenly can't get up
Go study notes (84) - Go project directory structure

go mode tidy出现报错go warning “all“ matched no packages

This project is so geeky

ShardingSphere之水平分库实战(四)

WEB安全基础 - - -漏洞扫描器

Oracle has a weird temporary table space shortage problem

【多线程】

Detailed explanation of 9 common reasons for MySQL index failure
随机推荐
Kotlin协程:协程上下文与上下文元素
Typescript18 - object type
MySQL master-slave replication and read-write separation script - pro test available
MySQL database advanced articles
程序员工作三年攒多少钱合适?
In Google Cloud API gateway APISIX T2A and T2D performance test
Detailed explanation of 9 common reasons for MySQL index failure
ES6中 async 函数、await表达式 的基本用法
[Yugong Series] July 2022 Go Teaching Course 015-Assignment Operators and Relational Operators of Operators
ShardingSphere's unsharded table configuration combat (6)
BOM系列之Navigator对象
Common network status codes
金融政企被攻击为什么要用高防CDN?
Add text watermark to PHP image
Basic usage of async functions and await expressions in ES6
Preparations for web vulnerabilities
埃拉托斯特尼筛法
ShardingSphere read-write separation (8)
WEB Security Basics - - - Vulnerability Scanner
typescript16-void
