发布时间:2026/8/24 15:06:32
DeepSeek    LeetCode LCP 24. 数字游戏 Rust实现 这道题的核心在于数学转化 动态维护中位数。下面是解题思路与完整的 Rust 实现。核心解题思路1. 问题转化最终需要满足 nums[a1] nums[a] 1。对于前 i 个元素等价于将 nums[t] - t 变为同一个数 x。例如 nums[1] 要变成 x1等价于把 nums[1]-1 变成 x。2. 最小代价将一串数变成同一个数 x 的最小总操作数是当 x 取这串数的中位数时取得的。因此问题转化为对每个前缀 [0..i]求数组 b[t] nums[t] - t 的中位数并计算所有 b[t] 到中位数的距离之和。3. 动态维护中位数对顶堆使用两个堆来动态维护中位数· 大根堆 (lower)保存较小的一半元素堆顶是这部分的最大值。· 小根堆 (upper)保存较大的一半元素堆顶是这部分的最小值。· 维护 lower 的大小等于 upper 的大小或比它多 1。这样 lower 的堆顶就是当前数据流的中位数。· 同时维护 lower_sum 和 upper_sum 来快速计算距离和。Rust 实现rustuse std::collections::BinaryHeap;use std::cmp::Reverse;impl Solution {pub fn nums_game(nums: Veci32) - Veci32 {const MOD: i64 1_000_000_007;let n nums.len();let mut ans Vec::with_capacity(n);// 大根堆存较小的一半使用 Reverse 实现最大堆let mut lower BinaryHeap::new();// 小根堆存较大的一半let mut upper BinaryHeap::new();let mut lower_sum: i64 0;let mut upper_sum: i64 0;for (i, num) in nums.iter().enumerate() {// 关键转化nums[i] - ilet x (num - i as i32) as i64;// 1. 将新元素 x 插入到合适的堆中if lower.is_empty() || lower.peek().unwrap() x {lower.push(x);lower_sum x;} else {upper.push(Reverse(x));upper_sum x;}// 2. 平衡两个堆的大小保证 lower 的大小 upper 的大小// 且 lower 的大小最多比 upper 大 1if lower.len() upper.len() 1 {// lower 太大了把堆顶最大值移到 upperif let Some(top) lower.pop() {lower_sum - top;upper.push(Reverse(top));upper_sum top;}} else if upper.len() lower.len() {// upper 太大了把堆顶最小值移到 lowerif let Some(Reverse(top)) upper.pop() {upper_sum - top;lower.push(top);lower_sum top;}}// 3. 计算当前前缀的最小操作数let res if (i 1) % 2 0 {// 偶数个元素中位数可以是中间两个数的任意值这里用 upper 的最小值// 代价 upper_sum - lower_sum(upper_sum - lower_sum) % MOD} else {// 奇数个元素中位数是 lower 的最大值// 代价 (upper_sum - lower_sum) lower.peek().unwrap()let median *lower.peek().unwrap();(upper_sum - lower_sum median) % MOD};// 确保结果非负ans.push(((res % MOD MOD) % MOD) as i32);}ans}}复杂度分析· 时间复杂度: O(n log n)其中 n 是数组长度。每个元素执行常数次堆的插入和删除操作。· 空间复杂度: O(n)用于存储两个堆。总结这个实现将复杂的数列操作问题通过 nums[i] - i 的转化变成了经典的中位数问题并利用两个堆对顶堆在遍历过程中动态维护中位数从而高效地计算出每个前缀的最小操作数。

相关新闻

2026/8/24 15:06:32

JDBC学习_API

APIconnectionStatementResultSetpreparedStatementDriud连接池

2026/8/24 15:06:32

海外版外卖结算:账本归属与导出字段设计

中东市区综合运营商做海外版外卖结算,卡点经常不是「会不会出报表」。 要问账本落在谁的 schema、能否按字段目录导出、币种与订单归属是否可复现。 数据若只在实施方笔记本里的 CSV,结算完成了账仍不在自己库。 下文从 ledger 分录、托管范围和导出契…

2026/8/24 15:06:32

Nano-VLLM全代码解析笔记(4)-model_runner

当前笔记顺序Engine(当前model_runner.py)->LayersEngine的运行架构(总结时或者弄不清一些调用顺序时看):model_runner.py(最难的一个,要理清kv_cache的逻辑与物理分配的关系,建议配合总结的图一起看,另外这里很多设…

2026/8/24 17:26:52

AI智能体技能下游适应:从概念到实践的迁移学习指南

1. 项目概述:当智能体学会“举一反三”最近在折腾AI智能体(Agent)项目时,我遇到了一个几乎所有从业者都会头疼的问题:好不容易在一个特定任务上(比如写邮件、查数据)把智能体调教得服服帖帖&…

2026/8/24 17:26:52

无接触触觉交互技术解析:从超声波力场到AIOT应用实践

1. 项目概述:当触觉遇见无接触交互最近在捣鼓一个挺有意思的玩意儿,核心就一句话:用触觉技术来实现无接触的人机交互(HCI)。听起来是不是有点矛盾?触觉,顾名思义得“触”到才行,怎么…

2026/8/24 0:07:22

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/24 1:12:32

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/24 8:17:29

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/24 1:09:25

3条命令跑通LocalAI:无GPU本地AI引擎部署

3条命令跑通LocalAI:无GPU本地AI引擎部署 【免费下载链接】LocalAI LocalAI is the open-source AI engine. Run any model - LLMs, vision, voice, image, video - on any hardware. No GPU required. 项目地址: https://gitcode.com/GitHub_Trending/lo/LocalAI…

2026/8/24 1:09:25

AI推理性能测试怎么做:MLPerf Inference完整上手指南

AI推理性能测试怎么做:MLPerf Inference完整上手指南 【免费下载链接】inference Reference implementations of MLPerf inference benchmarks 项目地址: https://gitcode.com/gh_mirrors/inf/inference 同一个模型换一张卡,速度快多少你知道吗&a…

2026/8/24 13:42:17

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/23 6:14:43

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/23 4:22:01

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…