Kimi    LeetCode LCP 09. 最小跳跃次数 Rust实现
LeetCode LCP 09. 最小跳跃次数 - Rust 实现根据搜索结果LCP 09 的题目描述如下 游戏机由 N 个特殊弹簧排成一排编号为 0 到 N-1。初始有一个小球在编号 0 的弹簧处。若小球在编号为 i 的弹簧处通过按动弹簧可以选择把小球向右弹射 jump[i] 的距离或者向左弹射到任意左侧弹簧的位置。也就是说在编号为 i 弹簧处按动弹簧小球可以弹向 0 到 i-1 中任意弹簧或者 ijump[i] 的弹簧若 ijump[i]N则表示小球弹出了机器。小球位于编号 0 处的弹簧时不能再向左弹。方法一动态规划倒序遍历核心思路从后往前计算 dp[i]表示从位置 i 跳出机器的最小跳跃次数。- 向右跳i jump[i]若超出边界则一步跳出- 向左跳可以到达任意左侧位置意味着左侧位置可以通过一步到达 irustimpl Solution {pub fn min_jump(jump: Veci32) - i32 {let n jump.len();if n 1 {return 1;}// dp[i] 从位置 i 跳出机器所需的最小跳跃次数let mut dp vec![i32::MAX; n];// 从后往前遍历for i in (0..n).rev() {// 向右跳let next i jump[i] as usize;if next n {// 可以直接跳出机器dp[i] 1;} else {dp[i] dp[next] 1;}// 向左跳的优化位置 i 可以向左跳到任意 j i 的位置// 反过来想从 j 可以一步跳到 i所以如果 dp[i] 1 更优可以更新 dp[j]// 但实际上这里是i 可以到达左侧任意位置意味着左侧位置可以通过 i 转移// 更关键的是对于 j i如果 dp[j] dp[i] 1说明从 i 跳到 j 更优// 因为 i 可以向左跳到任意位置所以 i 左侧的位置都可以被 i 到达// 但这里我们要更新的是从 i 出发左侧位置已经被考虑过了因为倒序// 实际上这个循环是在优化如果 i 能跳到左侧那左侧的 dp 值应该 dp[i] 1// 但倒序时左侧更小的下标还没计算所以这个循环是在更新右侧已经计算过的位置// 即i 可以向左跳意味着对于已经计算过的 j i可以从 i 一步到达... 不对// 重新理解倒序遍历i 右侧的位置都已经计算好了// 如果 dp[j] dp[i] 1说明从 i 跳到 j 更优但 i 只能向左跳不能向右跳到 j i// 所以这个循环的实际含义是i 可以向左跳到任意位置那么对于未来的 j i// 它们可以通过一步跳到 i所以 dp[j] 至少可以是 dp[i] 1// 但这里 j 从 i1 开始是向右的方向...// 实际上这个优化是因为 i 可以向左跳到任意位置那么对于已经遍历过的右侧位置 j// 如果它们的最优解需要经过左侧某个位置而那个位置可以通过 i 到达...// 这个优化比较 trick核心是利用了向左可以跳任意远的性质for j in (i 1)..n {if dp[j] dp[i] 1 {dp[j] dp[i] 1;} else {break; // 后面的已经更优了无需更新}}}dp[0]}}方法二BFS 双队列优化推荐可处理 10^6 数据核心思路BFS 天然适合求最短路径。但普通 BFS 向左跳时需要遍历所有左侧未访问位置导致重复。使用一个辅助队列 index_q 存储所有下标每次处理位置 t 时将 index_q 中所有小于 t 的未访问位置一次性加入队列并弹出已处理的位置保证每个位置只被访问一次。rustuse std::collections::VecDeque;impl Solution {pub fn min_jump(jump: Veci32) - i32 {let n jump.len();if n 1 {return 1;}let mut visited vec![false; n];let mut q VecDeque::new(); // BFS 主队列let mut index_q VecDeque::new(); // 辅助队列存储所有下标用于优化向左跳// 初始化辅助队列包含 0 到 n-1for i in 0..n {index_q.push_back(i);}q.push_back(0);visited[0] true;let mut ans 0;while !q.is_empty() {let cnt q.len();for _ in 0..cnt {let t q.pop_front().unwrap();// 向右跳let next t jump[t] as usize;if next n {// 跳出机器return ans 1;}if !visited[next] {visited[next] true;q.push_back(next);}// 向左跳利用 index_q 批量处理所有左侧未访问位置while let Some(front) index_q.front() {if front t {break; // 只处理严格小于 t 的位置}index_q.pop_front();if !visited[front] {visited[front] true;q.push_back(front);}}}ans 1;}-1 // 无法跳出理论上不会发生因为可以一直向左}}复杂度分析方法 时间复杂度 空间复杂度 适用场景动态规划 O(n^2) 最坏情况 O(n) n \le 10^4BFS 双队列 O(n) O(n) n \le 10^6对于题目限制 1 \le jump.length \le 10^6推荐使用 BFS 双队列优化方法每个位置最多入队一次每个下标最多从 index_q 中弹出一次总时间复杂度为 O(n)。示例验证输入jump [2, 5, 1, 1, 1, 1]- BFS 过程- 第 0 步q [0]- 第 1 步从 0 向右跳到 2向左无0 是最左q [2]- 第 2 步从 2 向右跳到 3向左跳index_q 中小于 2 的有 1加入 1q [3, 1]- 第 3 步处理 3向右跳到 4向左无新位置处理 1向右跳到 6 6跳出结果3 次跳跃路径 0 - 2 - 1 - 6 ✓

相关新闻

Java程序员简历撰写指南:从技术深度到项目价值

Java程序员简历撰写指南:从技术深度到项目价值

1. Java程序员简历核心要素解析 对于月薪3万级别的Java开发岗位,简历需要突出技术深度和项目价值。我见过太多优秀候选人因为简历问题错失面试机会,这里分享一套经过验证的撰写方法论。 1.1 技术栈呈现技巧 资深Java工程师的技术栈展示要遵循"金…

2026/8/21 7:05:39 阅读更多 →
数学建模图论习题精解:从算法原理到建模实战

数学建模图论习题精解:从算法原理到建模实战

1. 项目概述:一份习题答案的价值与边界 最近在整理资料时,翻到了司守奎老师《数学建模算法与应用》第二版第四章的图论部分习题。这本书是很多数学建模爱好者和参赛者的“案头书”,其图论章节更是将抽象的图论知识与实际建模问题紧密结合的典…

2026/8/22 7:28:28 阅读更多 →
Golang面试全攻略:35道核心题目深度解析

Golang面试全攻略:35道核心题目深度解析

1. Golang面试题解析:从基础到高级的全面指南作为一名Golang开发者,面试是职业生涯中不可避免的重要环节。这份35道Golang面试题涵盖了从基础语法到高级特性的各个方面,帮助你在面试中游刃有余。我将结合实际开发经验,详细解析每道…

2026/8/22 9:01:23 阅读更多 →

最新新闻

技术简历优化:如何提升匹配度获得更多面试机会

技术简历优化:如何提升匹配度获得更多面试机会

1. 为什么你的简历总是石沉大海?最近帮朋友看简历时发现一个现象:很多人投递几十份简历却收不到任何面试邀约。这往往不是因为能力不足,而是简历与岗位的匹配度出现了严重偏差。招聘方平均只用6秒扫描一份简历,如果你的核心优势没…

2026/8/22 9:01:26 阅读更多 →
从浏览器插件到本机 Agent:文档 AI 三年形态演进

从浏览器插件到本机 Agent:文档 AI 三年形态演进

前几天整理浏览器,翻出一个 2023 年装的文档 AI 插件,已经吃灰两年多。从浏览器插件到今天跑在本机的 MCP 智能体,文档 AI 这三年换了三种形态。这篇不聊参数聊形态,把三种形态的差别盘一遍,顺便说说为什么 2026 年这个…

2026/8/22 9:01:26 阅读更多 →
内存四区详解:从栈溢出到内存泄漏,写出健壮程序的底层基石

内存四区详解:从栈溢出到内存泄漏,写出健壮程序的底层基石

1. 从一次“诡异”的崩溃说起:为什么理解内存四区是基本功最近在帮一个朋友排查一个C程序的问题,现象很典型:程序在Windows 11上运行一段时间后,偶尔会毫无征兆地崩溃,调试器指向的崩溃点每次都不一样,有时…

2026/8/22 9:01:26 阅读更多 →
蓝牙折叠键盘如何通过多设备切换重塑移动办公生产力

蓝牙折叠键盘如何通过多设备切换重塑移动办公生产力

最近在整理桌面时,我发现了一个挺有意思的现象:手边的键盘越来越多。有为了手感买的机械键盘,有为了便携带的平板键盘,还有笔记本自带的键盘。每次在不同设备间切换——比如在笔记本上写代码,在平板上看文档&#xff0…

2026/8/22 9:01:26 阅读更多 →
察元桌面版与 WPS 加载项协作拓扑

察元桌面版与 WPS 加载项协作拓扑

上个月帮法规科做内网部署,科长指着屏幕问我:"你们这到底装了几个服务?为什么端口监听里 62581 和 62588 都有?"当时我一时没答利索,回家把拓扑画了一遍才算彻底讲清楚。这篇就把这两个端口的分工掰开说说&a…

2026/8/22 9:01:26 阅读更多 →
集合运算核心指南:从维恩图到Python/SQL实战应用

集合运算核心指南:从维恩图到Python/SQL实战应用

大家好,我是专注于技术分享的博主。今天我们来聊聊一个看似基础,但在编程、数据库查询乃至算法设计中都无处不在的核心概念——集合。很多开发者在处理数据去重、权限校验、推荐系统交集计算时,常常对集合操作的理解停留在表面,导…

2026/8/22 9:00:26 阅读更多 →

日新闻

沉金PCB工艺实战指南:从设计到SMT焊接的可靠性保障

沉金PCB工艺实战指南:从设计到SMT焊接的可靠性保障

在电子硬件开发领域,PCB(印制电路板)的沉金工艺是提升产品可靠性和焊接质量的关键环节。对于需要高密度互连、长期稳定运行或高频信号传输的板卡,如“黍姐仿通行证”这类可能涉及身份识别、数据交互的硬件项目,选择正确…

2026/8/22 0:00:11 阅读更多 →
电气考研电路八月强化四步法:从知识体系到真题实战的闭环攻略

电气考研电路八月强化四步法:从知识体系到真题实战的闭环攻略

这次我们来看一个针对电气考研电路科目的学习规划项目。它不是软件工具,而是一套聚焦于8月份关键节点的备考策略。对于电气工程考研的同学来说,电路分析是专业课的重中之重,也是拉开分差的关键。进入8月,复习进入强化阶段&#xf…

2026/8/22 0:00:11 阅读更多 →
消除AI代码的“AI味”:Claude Code设计优化技能配置与实战指南

消除AI代码的“AI味”:Claude Code设计优化技能配置与实战指南

大家好,我是专注于前端开发与AI工具实践的技术博主。在日常使用 Claude Code 等AI编程助手时,你是否也遇到过这样的困扰:生成的代码功能上没问题,但代码风格、组件设计、交互逻辑总透着一股“AI味”——布局单调、样式简陋、交互生…

2026/8/22 0:00:11 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/21 3:21:33 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/22 8:09:09 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

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

2026/8/21 6:07:56 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/21 16:42:28 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/22 7:31:03 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/22 3:22:48 阅读更多 →