DeepSeek LeetCode 3826. 最小分割分数 Rust实现

发布时间:2026/9/22 19:21:15

DeepSeek    LeetCode 3826. 最小分割分数 Rust实现 这道题的核心解法是斜率优化DP (Convex Hull Trick)。Rust 的实现思路与 Python / Java 一致但需要利用其强大的泛型和迭代器来写出更安全、高效的代码。 核心思路回顾状态转移方程可变形为查询直线 y m*x c 在 x pref[i] 处的最小值其中直线参数为· 斜率 m -2 * pref[j]· 截距 c dp_prev[j] pref[j] * pref[j] - pref[j]通过维护一个下凸包 (Lower Hull) 并用双端队列 (VecDeque) 来保证 O(1) 的查询和插入。 Rust 代码实现rustuse std::collections::VecDeque;impl Solution {pub fn min_partition_score(nums: Veci32, k: i32) - i64 {let n nums.len();let k k as usize;// 1. 计算前缀和 (使用 i64 防止溢出)let mut pref vec![0i64; n 1];for (i, num) in nums.iter().enumerate() {pref[i 1] pref[i] num as i64;}// 2. 初始化 dp_prev: 只分 1 段的情况 (存储两倍分数)let mut dp_prev vec![0i64; n 1];for i in 1..n {let s pref[i];dp_prev[i] s * (s 1); // 两倍分数避免浮点数}// 3. 迭代分段数从 2 到 kfor _ in 2..k {let mut dp_cur vec![0i64; n 1];let mut hull: VecDeque(i64, i64) VecDeque::new(); // (斜率 m, 截距 c)for i in 1..n {let j i - 1;// 将新的候选直线 (基于 j) 加入凸包if j 1 {let m -2 * pref[j];let c dp_prev[j] pref[j] * pref[j] - pref[j];Self::add_line(mut hull, m, c);}// 查询在 x pref[i] 处的最优值if !hull.is_empty() {while hull.len() 2 {let (m1, c1) hull[0];let (m2, c2) hull[1];// 如果第一条直线在 x 处不比第二条优则弹出if m1 * pref[i] c1 m2 * pref[i] c2 {hull.pop_front();} else {break;}}let (best_m, best_c) hull[0];dp_cur[i] best_m * pref[i] best_c pref[i] * pref[i] pref[i];} else {// 处理不可能的状态如 i 当前分段数dp_cur[i] i64::MAX / 4;}}dp_prev dp_cur;}// 最终答案除以 2 (因为全程使用两倍分数)dp_prev[n] / 2}// 辅助函数向凸包中添加直线 (维护下凸包)fn add_line(hull: mut VecDeque(i64, i64), m: i64, c: i64) {// 检查新直线是否会让队尾的直线变得无用while hull.len() 2 {let (m1, c1) hull[hull.len() - 2];let (m2, c2) hull[hull.len() - 1];// 判断 (c2 - c1) * (m1 - m) (c - c1) * (m1 - m2)// 使用交叉相乘避免浮点数if (c2 - c1) * (m1 - m) (c - c1) * (m1 - m2) {hull.pop_back();} else {break;}}hull.push_back((m, c));}}⏳ 复杂度分析· 时间复杂度: O(k * n)。每个状态至多入队出队一次。· 空间复杂度: O(n)。用于存储 DP 数组和凸包。这个 Rust 实现直接翻译了斜率优化的核心逻辑并利用 i64 安全地处理了所有整数运算避免了溢出风险。
延伸阅读

更多相关文章

2026/9/22 6:21:41

SkillSmith:通过文本与权重组合构建AI技能系统的实践指南

在构建智能应用时,我们常常面临一个挑战:如何快速、灵活地组合已有的能力,创造出满足特定需求的新功能?无论是希望将文本描述转化为可执行的代码,还是将多个预训练模型的能力融合,传统的开发流程往往涉及复…

2026/9/22 19:19:59

辐射EMC测试全流程解析:从原理、标准到设计整改实战

1. 项目概述:为什么我们需要深入理解辐射EMC测试?如果你是一名硬件工程师、产品经理,或者负责将任何带电的设备推向市场,那么“辐射电磁兼容性测试”这个词,对你而言绝不是一个遥远的、只属于实验室的概念。它更像是一…

2026/9/19 23:45:57

机动目标跟踪:Singer与当前统计模型原理、实现与对比

1. 项目概述:从理论到实践的机动目标跟踪在目标跟踪领域,尤其是雷达、声呐或视觉系统中,我们常常面临一个核心挑战:目标并非总是匀速直线运动。它可能突然加速、减速或转弯,这种不可预测的运动变化,我们称之…

2026/9/22 20:06:28

量比指标线开发保姆级教程:3步解决代码跑不通难题

量比指标线开发保姆级教程:3步解决代码跑不通难题 刚把网上抄来的量比指标线代码丢进项目,是不是直接报错了?变量未定义、数据对不上、曲线画不出来?别急,这种“复制粘贴就能跑”的幻觉最坑人。今天这篇保姆级教程,不整虚的,直接带你从零搭建一个能落…

2026/9/22 20:06:28

自荐书格式新手避坑指南,3个高频考点一次讲透

自荐书格式新手避坑指南,3个高频考点一次讲透 刚拿到Offer,HR突然甩来一句“把自荐书发我”,你脑子瞬间一片空白。别慌,这玩意儿在技术圈常被误解成“个人简历的复制粘贴”,结果配置半天环境,连个像样的文档都交不出来。今天咱们不整虚的,直接…

2026/9/22 20:06:28

3步搞定飞机素材手写实现,拒绝文档迷路

3步搞定飞机素材手写实现,拒绝文档迷路 官方文档翻了三遍还是晕?别急,直接上手手写实现。 一句话原理 飞机素材本质是位图数据与变换矩阵的结合体。 类比解释 把飞机素材想象成乐高积木的包装。 你不需要拆开每一个塑料颗粒(像素)。…

2026/9/22 20:01:28

3个j3455性能优化陷阱:手写实现避坑指南

3个j3455性能优化陷阱:手写实现避坑指南 看了一堆教程还是不会写项目?别急,问题不在你笨,而在你没摸透底层逻辑。很多开发者卡在“j3455”这个概念上,以为它是某个特定框架或库,其实它是一个被过度神话的编码代号,常出现在老旧系统的性能优…

2026/9/22 10:02:42

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/22 9:07:39

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/22 0:04:49

输电线路在线监测高频面试题拆解 3秒抓住官方文档重点

输电线路在线监测高频面试题拆解 3秒抓住官方文档重点 官方文档几百页翻到头还是懵?面试问到 输电线路在线监测 的数据链路时,脑子一片空白?别慌,这种 高频面试题 我整理了10年,专门治各种“文档太长抓不住重点”的毛病。…

2026/9/22 0:04:49

中介房源管理系统重构避坑:3个关键步骤搞定API变更

中介房源管理系统重构避坑:3个关键步骤搞定API变更 版本升级后 API 全变了,这种痛只有真做过的人懂。 很多团队在接手老旧房产项目时,最崩溃的不是代码烂,而是底层框架升级后,原本熟悉的接口调用方式彻底失效。 这份 保姆级教程…

2026/9/22 0:04:49

3个坑点带你一文搞懂55gg小游戏源码

3个坑点带你一文搞懂55gg小游戏源码 盯着控制台满屏的红色报错,看着那一长串 StackTrace ,是不是脑子瞬间宕机?别急,这种时候最忌讳的就是盲目改代码。很多刚入行的前端同学,面对 55gg 小游戏这类轻量级 H5…

2026/9/22 16:34:32

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/22 20:01:30

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/22 13:25:41

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码