当前位置:网站首页>【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
边栏推荐
猜你喜欢
Jmeter parameter transfer method (token transfer, interface association, etc.)
Mysql systemized JOIN operation example analysis
Error ER_NOT_SUPPORTED_AUTH_MODE Client does not support authentication protocol requested by serv
What is Promise?What is the principle of Promise?How to use Promises?
数据库的严格模式
xss bypass: prompt(1)
论文理解:“Designing and training of a dual CNN for image denoising“
IOT跨平台组件设计方案
Restricted character bypass
小程序-全局数据共享
随机推荐
从两个易错的笔试题深入理解自增运算符
Consistency and Consensus of Distributed Systems (1) - Overview
xss绕过:prompt(1)
【Yugong Series】July 2022 Go Teaching Course 013-Constants, Pointers
go mode tidy出现报错go warning “all“ matched no packages
MySQL database constraints, table design
unity2D横版游戏教程4-物品收集以及物理材质
【Yugong Series】July 2022 Go Teaching Course 017-IF of Branch Structure
mysql主从复制及读写分离脚本-亲测可用
PHP图片添加文字水印
【愚公系列】2022年07月 Go教学课程 017-分支结构之IF
Encapsulate and obtain system user information, roles and permission control
How to solve types joiplay simulator does not support this game
C语言力扣第48题之旋转图像。辅助数组
pytorch双线性插值
XSS相关知识
MySQL master-slave replication and read-write separation script - pro test available
从笔试包装类型的11个常见判断是否相等的例子理解:包装类型、自动装箱与拆箱的原理、装箱拆箱的发生时机、包装类型的常量池技术
【深入浅出玩转FPGA学习14----------测试用例设计2】
解决:Parameter 0 of method ribbonServerList in com.alibaba.cloud.nacos.ribbon.NacosRibbonClientConfigu