【Leetcode 952】按公因数计算最大组件大小

题干

给定一个由不同正整数的组成的非空数组 nums ,考虑下面的图:

  • 有 nums.length 个节点,按从 nums[0] 到 nums[nums.length - 1] 标记;
  • 只有当 nums[i] 和 nums[j] 共用一个大于 1 的公因数时,nums[i] 和 nums[j]之间才有一条边。

返回 图中最大连通组件的大小 。

解题思路

有连通查找可以想到并查集,公因数就常见思路gcd函数计算就行,常规题型的变体

思路拆解

  1. 并查集(Union-Find)

    • 使用并查集来管理连通组件。

    • 对于每个数,找到它的所有质因数,并将这些质因数与数本身合并到同一个集合中。

    • 最终,统计每个集合的大小,返回最大值。

  2. 质因数分解

    • 对于每个数,分解出它的所有质因数。

    • 将这些质因数作为桥梁,将具有相同质因数的数合并到同一个集合中。

源码

并查集模板

class UnionFind {int[] parent;int[] rank;public UnionFind(int n) {parent = new int[n];for (int i = 0; i < n; i++) {parent[i] = i;}rank = new int[n];}public void union(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]++;}}}public int find(int x) {if (parent[x] != x) {parent[x] = find(parent[x]);}return parent[x];}
}

 题解

 public int largestComponentSize(int[] nums) {int m = Arrays.stream(nums).max().getAsInt();UnionFind uf = new UnionFind(m + 1);for (int num : nums) {for (int i = 2; i * i <= num; i++) {if (num % i == 0) {uf.union(num, i);uf.union(num, num / i);}}}int[] counts = new int[m + 1];int ans = 0;for (int num : nums) {int root = uf.find(num);counts[root]++;ans = Math.max(ans, counts[root]);}return ans;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/19107.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DeepSeek-R1 大模型本地部署指南

文章目录 一、系统要求硬件要求软件环境 二、部署流程1. 环境准备2. 模型获取3. 推理代码配置4. 启动推理服务 三、优化方案1. 显存优化技术2. 性能加速方案 四、部署验证健康检查脚本预期输出特征 五、常见问题解决1. CUDA内存不足2. 分词器警告处理3. 多GPU部署 六、安全合规…

家里WiFi信号穿墙后信号太差怎么处理?

一、首先在调制解调器&#xff08;俗称&#xff1a;猫&#xff09;测试网速&#xff0c;网速达不到联系运营商&#xff1b; 二、网线影响不大&#xff0c;5类网线跑500M完全没问题&#xff1b; 三、可以在卧室增加辅助路由器&#xff08;例如小米AX系列&#xff09;90~200元区…

win11系统 Docker Desktop提示Docker Engine stopped解决全过程记录

DockerDesktop安装指南以及Windows下WSL2和 Hyper-V相关问题追查 【已解决】win10系统 Docker 提示Docker Engine stopped解决全过程记录 本篇文章主要记录Docker Desktop安装和使用时出现的问题及解决方法&#xff0c;以及后续使用夜神模拟器&#xff0c;关闭了Hyper-V时&am…

手动埋点的demo

上代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>埋点示例</title> </head><b…

数据结构——链表

目录 一、链表 1.1 链表的概念 二、单链表 2.1 单链表的概念 2.2单链表的操作 2.2.1 单链表的结点创建 2.2.2 单链表的头插 2.2.3 单链表遍历 2.2.4 单链表的头删 2.2.5 单链表的尾插 2.2.6 单链表的尾删 2.2.7 单链表按位置插入 2.2.8 单链表按位置删除 2.2.9 单链表按位置修…

LeetCode每日精进:142.环形链表II

题目链接&#xff1a;142.环形链表II 题目描述&#xff1a; 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环…

【办公类-90-02】】20250215大班周计划四类活动的写法(分散运动、户外游戏、个别化综合)

背景需求&#xff1a; 做了中班的四类活动安排表&#xff0c;我顺便给大班做一套 【办公类-90-01】】20250213中班周计划四类活动的写法&#xff08;分散运动、户外游戏、个别化&#xff08;美工室图书吧探索室&#xff09;&#xff09;-CSDN博客文章浏览阅读874次&#xff0…

网络工程师 (42)IP地址

一、定义与功能 IP地址是IP协议提供的一种统一的地址格式&#xff0c;它为互联网上的每一个网络和每一台主机分配一个逻辑地址&#xff0c;以此来屏蔽物理地址的差异。这种地址分配方式确保了用户在连网的计算机上操作时&#xff0c;能够高效且方便地从众多计算机中选出自己所需…

cap1:TensorRT介绍及CUDA环境安装

《TensorRT全流程部署指南》专栏文章目录&#xff1a; cap1&#xff1a;TensorRT介绍及CUDA环境安装cap2&#xff1a;1000分类的ResNet的TensorRT部署指南&#xff08;python版&#xff09;cap3&#xff1a;自定义数据集训练ResNet的TensorRT部署指南&#xff08;python版&…

保持角色一致性的绘本生成AI开源项目之Story-Adapter本地部署Windows篇

本文已首发&#xff1a;秋码记录 在人工智能领域&#xff0c;生成一致且连贯的故事绘本一直是一个具有挑战性的任务。Story-Adapter作为一个开源项目&#xff0c;旨在解决这一问题&#xff0c;为用户提供无需训练即可生成长篇故事视觉化的工具。本文将指导您如何在Windows系统…

[JVM篇]垃圾回收器

垃圾回收器 Serial Seral Old PartNew CMS(Concurrent Mark Sweep) Parallel Scavenge Parallel Old G1 ZGC

字符串(典型算法思想)—— OJ例题算法解析思路

目录 一、14. 最长公共前缀 - 力扣&#xff08;LeetCode&#xff09; 解法一&#xff1a;算法代码&#xff08;两两比较&#xff09; 1. 初始化公共前缀 2. 遍历字符串数组 3. 辅助函数 findCommon 4. 返回最终结果 总结 解法二&#xff1a;算法代码&#xff08;统一比较…

宝塔面板开始ssl后,使用域名访问不了后台管理

宝塔面板后台开启ssl访问后&#xff0c;用的证书是其他第三方颁发的证书 再使用 域名/xxx 的形式&#xff1a;https://域名:xxx/xxx 访问后台&#xff0c;结果出现如下&#xff0c;不管使用 http 还是 https 的路径访问都进不后台管理 这个时候可以使用 https://ip/xxx 的方式来…

java继承

1.继承的内存图 2.成员方法不能被继承 虚方法表满足&#xff1a;1.非static、2.非private、3.非final

通用知识库问答流程

总体流程&#xff0c;定义回调&#xff08;函数执行完把回答的内容填充到数据库&#xff09;&#xff0c;使用封装的fastchat获取调用的模型&#xff0c; 根据向量数据库名&#xff0c;获取向量数据库实例 这是ssl 长连接的一种标准写法&#xff0c;首先写一个 生成器函数&…

WPS/Office使用其他LLM大语言模型作为AI助手

前言 WPS也有内置的AI&#xff0c;叫灵犀&#xff0c;但只能说是属于“能用&#xff0c;有好过无”&#xff0c;所以我一直在找能否在WPS上用上其他的LLM大语言模型&#xff0c;比如目前最火的DeepSeek&#xff0c;结论是&#xff1a;安装OfficeAI助手&#xff0c;就能在WPS上用…

亲测有效!使用Ollama本地部署DeepSeekR1模型,指定目录安装并实现可视化聊天与接口调用

文章目录 一、引言二、准备工作&#xff08;Ollama 工具介绍与下载&#xff09;2.1 Ollama介绍2.2 Ollama安装 三、指定目录安装 DeepSeek R1四、Chatbox 可视化聊天搭建4.1 Chatbox下载安装4.2 关联 DeepSeek R1 与 Chatbox 的步骤 五、使用 Ollama 调用 DeepSeek 接口5.1 请求…

4.SpringSecurity在分布式环境下的使用

参考 来源于黑马程序员&#xff1a; 手把手教你精通新版SpringSecurity 分布式认证概念说明 分布式认证&#xff0c;即我们常说的单点登录&#xff0c;简称SSO&#xff0c;指的是在多应用系统的项目中&#xff0c;用户只需要登录一次&#xff0c;就可以访 问所有互相信任的应…

傅里叶公式推导(五)

文章目录 从离散到连续回顾第四章F(w) 从离散到连续 回顾第四章 在周期 T&#xff0c; 傅里叶变换公式 f ( t ) ( t T ) f ( t ) ∑ n − ∞ ∞ C n e i n Δ w t C n 1 T ∫ 0 T f ( t ) e − i n Δ w t d t 式1 f(t)(tT) \\ f(t) \sum_{n-\infty}^{\infty }C_ne^{i…

VS Code User和System版区别【推荐使用System版本】and VSCode+Keil协同开发之Keil Assistant

VS Code User和System版区别 Chapter1 VS Code User和System版区别1. 对于安装而言2. 结束语 Chapter2 VS Code 安装、配置教程及插件推荐插件&#xff1a; Chapter3 VSCodeKeil协同开发之Keil Assistant1. 效果展示2. Keil Assistant简介3. Keil Assistant功能特性4. 部署步骤…