Kimi LeetCode 3574. 最大子数组 GCD 分数 Rust实现

发布时间:2026/7/25 20:40:49
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 的约束下可以通过所有测试用例。

相关新闻

最新新闻

5步精通Windows DLL注入:Xenos注入器深度实战指南

5步精通Windows DLL注入:Xenos注入器深度实战指南

5步精通Windows DLL注入:Xenos注入器深度实战指南 【免费下载链接】Xenos Windows dll injector 项目地址: https://gitcode.com/gh_mirrors/xe/Xenos 在Windows系统开发与安全研究领域,DLL注入技术一直是连接进程隔离壁垒的关键桥梁。你是否曾面…

2026/7/25 18:09:15
AI编舞技术解析:从文本描述到舞蹈动作生成的完整实践指南

AI编舞技术解析:从文本描述到舞蹈动作生成的完整实践指南

最近在AI生成领域,一个名为"haru moe 编舞FLO - Wolk Like This"的项目引起了广泛关注。这个看似简单的标题背后,实际上代表了AI在创意内容生成领域的一个重要突破——将文本描述转化为高质量的舞蹈动作序列。 对于开发者而言,这类…

2026/7/25 8:11:28
无人机继电器原理与实战:从APM1到Pixhawk的物理控制方案

无人机继电器原理与实战:从APM1到Pixhawk的物理控制方案

1. 项目概述:为什么无人机上需要一个“机械手”来按开关? 在 Pixhawk 生态里,尤其是早期基于 APM 1/2 硬件平台的飞控系统中,“继电器开关(Relay Switch)”这个功能模块,常被新手误认为是“可有…

2026/7/25 14:54:19
C++构建电商实时画像系统:高并发架构与性能优化实战

C++构建电商实时画像系统:高并发架构与性能优化实战

1. 项目概述:为什么用C做电商画像系统? 当大家聊起电商大数据画像系统,第一反应往往是Java、Python或者Scala,毕竟Hadoop、Spark这些生态圈的主流语言摆在那里。但今天我想分享一个基于C构建的实战项目,这听起来可能有…

2026/7/25 14:59:52
convoC2未来路线图:消息加密、心跳检测与PowerShell版本开发计划

convoC2未来路线图:消息加密、心跳检测与PowerShell版本开发计划

convoC2未来路线图:消息加密、心跳检测与PowerShell版本开发计划 【免费下载链接】convoC2 C2 infrastructure over Microsoft Teams. 项目地址: https://gitcode.com/gh_mirrors/co/convoC2 convoC2作为基于Microsoft Teams的C2基础设施项目,正…

2026/7/25 14:14:54
【滤波跟踪】基于扩展卡尔曼滤波器 (EKF) 实现 UAV-UGV 系统的协作定位附Matlab代码

【滤波跟踪】基于扩展卡尔曼滤波器 (EKF) 实现 UAV-UGV 系统的协作定位附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/7/25 14:50:47

日新闻

周新闻

月新闻