尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Kimi    LeetCode 3574. 最大子数组 GCD 分数 Rust实现
这是 LeetCode 3574. 最大子数组 GCD 分数 的 Rust 实现。解题思路核心观察翻倍操作最多只能让子数组的 GCD 乘以 2。因此对于每个子数组我们需要判断是否能通过最多 k 次翻倍操作使 GCD 翻倍。关键步骤1. 预处理统计每个数中因子 2 的个数即 x 能被 2 整除的次数2. 枚举子数组固定左端点 l向右扩展右端点 r3. 维护三个值- g当前子数组的 GCD- mi子数组中因子 2 个数的最小值- t具有最小因子 2 个数的元素个数4. 判断翻倍如果 t k说明需要翻倍的元素超过 k 个无法翻倍否则 GCD 可以翻倍时间复杂度O(n^2 \cdot \log n)空间复杂度O(n)Rust 代码rustimpl Solution {pub fn max_gcd_score(nums: Veci32, k: i32) - i64 {let n nums.len();// 预处理统计每个数中因子 2 的个数let mut cnt vec![0i32; n];for i in 0..n {let mut x nums[i];while x % 2 0 {cnt[i] 1;x / 2;}}let mut ans: i64 0;// 枚举所有子数组for l in 0..n {let mut g: i32 0; // 当前子数组 GCDlet mut mi: i32 1 30; // 最小因子 2 个数let mut t: i32 0; // 具有最小因子 2 个数的元素个数for r in l..n {// 更新 GCDg Self::gcd(g, nums[r]);// 更新最小因子 2 个数及其出现次数if cnt[r] mi {mi cnt[r];t 1;} else if cnt[r] mi {t 1;}// 判断是否能翻倍 GCD// 如果具有最小因子 2 个数的元素个数 k则无法翻倍let val if t k { g as i64 } else { (g * 2) as i64 };let len (r - l 1) as i64;ans ans.max(len * val);}}ans}// 递归实现 GCDfn gcd(a: i32, b: i32) - i32 {if b 0 {a} else {Self::gcd(b, a % b)}}}代码说明- cnt[i] 记录 nums[i] 中因子 2 的个数例如 12 2^2 × 3则 cnt[i] 2- 翻倍操作的本质是将某个数乘以 2相当于增加一个因子 2- 子数组 GCD 中因子 2 的个数取决于子数组中所有数因子 2 个数的最小值 mi- 如果具有最小值 mi 的元素个数 t k则最多 k 次翻倍无法让所有这些元素的因子 2 个数都增加GCD 无法翻倍- 否则可以通过翻倍使 GCD 乘以 2这个解法在 n \le 1500 的约束下可以通过所有测试用例。
RELATED

相关推荐

【aigc】初识mediakit-cli 和 chatcut、远程 AI 能力的命令行代理

【aigc】初识mediakit-cli 和 chatcut、远程 AI 能力的命令行代理

mediakit-cli 部署指南 仓库已克隆到: mediakit-cli 环境检查结果 依赖 要求 当前版本 状态 Node.js ≥18 v22.22.2 ✅ npm - 10.9.7 ✅ Go ≥1.22(源码构建才需要) 1.20.5 ❌ 版本过低 ffmpeg 5.1.x 8.0.1 ✅(新版本兼容) ffprobe - 8.0.1 ✅ 部署方式 该项目有 两种部…

📅 2026/9/14 1:09:03
P10098 [ROIR 2023] 地铁建设 (Day 2)

P10098 [ROIR 2023] 地铁建设 (Day 2)

记录147 #include<bits/stdc.h> using namespace std; #define ll long long // 使用long long处理大数const int MAXN105; int n; ll p; ll z[MAXN],a[MAXN],b[MAXN]; // 存储每个发动机的参数// 验证函数&#xff1a;判断电压为x时&#xff0c;总功率是否>p bool c…

📅 2026/9/14 1:14:33
P9497 「RiOI-2」weight

P9497 「RiOI-2」weight

记录146 #include<bits/stdc.h> using namespace std; #define ll long long // 防止数据溢出&#xff0c;使用long long //n*n的矩阵&#xff0c;n是1e3 &#xff0c;所以N是1e6 const int N1e65; ll a[N],n,q,cnt; // a数组存储打平后的矩阵&#xff0c;cnt记录总数字…

📅 2026/10/8 10:51:16
MORE NEWS

更多资讯

📰

日本换电工证在哪里换 全流程办理指南 全国通用怎么办理

日本换电工证在哪里换 全流程办理指南 全国通用怎么办理 之前考的证在外省能不能转过来?这个问题很多在外地工作的朋友都问过,特别是像我们在洛阳涧西区的中小施工企业负责人,经常因为项目跨省作业,遇到证书使用受限的麻烦。好消息是,我国的特种作业操…

📰

松原哪有办电工证的保姆级教程:急需特种作业证才能上岗找工作

松原哪有办电工证的保姆级教程:急需特种作业证才能上岗找工作 你是不是正盯着手机屏幕,心里想着: 松原哪有办电工证的 ?别急,我懂你。现在找工作,没有电工证,连面试资格都没有。特种作业证,不仅是门槛,更是你进入这个行业的“入场券”。如果你正在…

📰

卓资电工证报名避坑指南:考前押题帮你少走弯路

卓资电工证报名避坑指南:考前押题帮你少走弯路 你是不是也遇到过这种情况?手里拿着电工证,却不知道去哪报名?怕被中介骗钱?怕跑错地方浪费时间?别急,今天就给你讲清楚【卓资电工证】的报考全流程,特别是考前押题怎么用,让你少花冤枉钱、少走冤枉路。…

📰

考电工证都有什么题培训机构怎么选

电工证考试都考啥题?上岗必备干货全在这儿 实操考试心里没底怕挂科,这可能是你眼下最真实、最急迫的担忧。电工证不仅是上岗必备的通行证,更直接影响你能否顺利进入工地、工厂、维修站点等作业现场。但很多人对考试内容一知半解,特别是面对实操考核时,更…

📰

中级电工证考试多少天官方回应怕考不过白交培训费

中级电工证考试多少天官方回应怕考不过白交培训费 怕考不过白交培训费?中级电工证考试多少天?官方回应来了,这波操作你必须知道。别让高价培训费打水漂,看完这篇,你就能知道如何科学备考、精准拿证。 为什么中级电工证这么重要?…

📰

电工证怎样留抵多久拿证怕考不过白交培训费

电工证怎样留抵多久拿证怕考不过白交培训费 怕考不过白交培训费?电工证怎样留抵,多久拿证?这些问题可能是你最关心的。特别是对于周口地区转岗的从业者来说,拿到电工证不仅是进入新行业的“通行证”,更是提升薪资、稳定工作的关键一步。但很多人在报名时…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬