当前位置:网站首页>【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
边栏推荐
- Asser uses ant sword to log in
- 程序员工作三年攒多少钱合适?
- 【Yugong Series】July 2022 Go Teaching Course 013-Constants, Pointers
- Summary of MySQL database interview questions (2022 latest version)
- Xss target drone training [success when pop-up window is realized]
- Shell programming of conditional statements
- DNS resolution process [visit website]
- WMware Tools安装失败segmentation fault解决方法
- SereTOD2022 Track2代码剖析-面向半监督和强化学习的任务型对话系统挑战赛
- Gabor filter study notes
猜你喜欢
Restricted character bypass
Neural Network (ANN)
go mode tidy出现报错go warning “all“ matched no packages
DOM系列之scroll系列
typescript9 - common base types
Detailed explanation of 9 common reasons for MySQL index failure
Error occurred while trying to proxy request项目突然起不来了
typescript12-联合类型
Mysql systemized JOIN operation example analysis
TypeScript在使用中出现的问题记录
随机推荐
typescript15- (specify both parameter and return value types)
ShardingSphere read-write separation (8)
Solution: Parameter 0 of method ribbonServerList in com.alibaba.cloud.nacos.ribbon.NacosRibbonClientConfigu
Understand from the 11 common examples of judging equality of packaging types in the written test: packaging types, the principle of automatic boxing and unboxing, the timing of boxing and unboxing, a
分布式系统的一致性与共识(1)-综述
XSS related knowledge
MySQL Series 1: Account Management and Engine
Error ER_NOT_SUPPORTED_AUTH_MODE Client does not support authentication protocol requested by serv
MySql data recovery method personal summary
Oracle has a weird temporary table space shortage problem
这个项目太有极客范儿了
typescript16-void
typescript12-联合类型
ShardingSphere's unsharded table configuration combat (6)
Rocky/GNU之Zabbix部署(1)
WMware Tools installation failed segmentation fault solution
Xss target drone training [success when pop-up window is realized]
ShardingSphere之公共表实战(七)
MySQL笔记下
MySQL notes under