Kimi LeetCode 3534. 针对图的路径存在性查询 II Rust实现

发布时间:2026/10/25 0:47:23

Kimi    LeetCode 3534. 针对图的路径存在性查询 II Rust实现 以下是 LeetCode 3534. 针对图的路径存在性查询 II 的完整 Rust 实现。---核心思路与 Java/Python 版本一致1. 排序按 nums 值排序记录原始下标到排序后位置的映射。2. 双指针求最远跳nxt[i] 表示从排序后位置 i 一步能到达的最远位置。3. 倍增预处理jump[i][k] 表示从 i 连续做 2^k 次最远跳到达的位置。4. 查询贪心同一连通分量内从高位到低位尝试跳跃求最少步数。时间复杂度O(n log n q log n)空间复杂度O(n log n)。---Rust 代码rustuse std::collections::HashMap;impl Solution {pub fn path_existence_queries(n: i32, nums: Veci32, max_diff: i32, queries: VecVeci32) - Veci32 {let n n as usize;let max_diff max_diff as i64;// 1. 按 nums 值排序记录原始下标 - 排序后位置的映射let mut order: Vecusize (0..n).collect();order.sort_by_key(|i| nums[i]);let mut sorted_nums vec![0i64; n];let mut pos vec![0usize; n];for (i, idx) in order.iter().enumerate() {sorted_nums[i] nums[idx] as i64;pos[idx] i;}// 2. 计算连通分量编号排序后连续段let mut comp vec![0usize; n];for i in 1..n {comp[i] comp[i - 1];if sorted_nums[i] - sorted_nums[i - 1] max_diff {comp[i] 1;}}// 3. 双指针求 nxt[i]从排序后位置 i 一步能跳到的最远位置let mut nxt vec![0usize; n];let mut r 0usize;for i in 0..n {while r 1 n sorted_nums[r 1] - sorted_nums[i] max_diff {r 1;}nxt[i] r;}// 4. 倍增数组jump[i][k] 表示从 i 连续跳 2^k 次最远跳到达的位置let log (n 1).next_power_of_two().trailing_zeros() as usize;let mut jump vec![vec![0usize; log]; n];for i in 0..n {jump[i][0] nxt[i];}for k in 1..log {for i in 0..n {jump[i][k] jump[jump[i][k - 1]][k - 1];}}// 5. 回答查询let mut ans Vec::with_capacity(queries.len());for q in queries {let u q[0] as usize;let v q[1] as usize;if u v {ans.push(0);continue;}let mut pu pos[u];let mut pv pos[v];if pu pv {std::mem::swap(mut pu, mut pv);}// 不在同一连通分量不可达if comp[pu] ! comp[pv] {ans.push(-1);continue;}// 倍增贪心从高位到低位能跳就跳求最少步数let mut cur pu;let mut steps 0i32;for k in (0..log).rev() {if jump[cur][k] pv {steps (1 k) as i32;cur jump[cur][k];}}// 最后一步一定能到达 pvans.push(steps 1);}ans}}---关键点说明步骤 说明排序映射 pos[u] 将原始节点编号映射到排序后的位置。Rust 中需小心 usize 与 i32 的类型转换。连通分量 排序后若相邻元素差 max_diff则开启新连通分量。查询时先判断 comp[pu] comp[pv]。最远跳 nxt 双指针在 O(n) 内求出每个位置一步能覆盖的最远范围。nxt[i] 单调不降。倍增 jump jump[i][k] 表示从 i 出发连续做 2^k 次贪心最远跳到达的位置。利用 next_power_of_two().trailing_zeros() 计算所需层数。查询贪心 从 pu 到 pv从高位到低位尝试如果跳 2^k 步后仍到不了 pv就先跳这 2^k 步。最终剩余距离只需一步即可覆盖。 注意Rust 中 nums 值差可能溢出 i32因此内部计算时转换为 i64 处理。
延伸阅读

更多相关文章

2026/10/21 0:18:03

网盘直链下载助手:九大网盘高速下载的完整技术解决方案

网盘直链下载助手:九大网盘高速下载的完整技术解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…

2026/10/25 0:42:50

TensorFlow 2.13 AdamW优化器报错解决方案

1. 问题现象与背景分析最近在升级到TensorFlow 2.13和Keras最新版本后,不少开发者在使用AdamW优化器时遇到了一个典型的报错:str object has no attribute minimize。这个错误通常发生在尝试编译模型或调用优化器方法时,表面看起来像是字符串…

2026/10/25 0:42:50

SAP CS模块核心架构与服务生命周期全解析

简介:本资源是一份面向SAP顾问与客户服务实施人员的CS(客户服务)模块系统性入门课件,聚焦SAP CS核心功能、主数据逻辑与跨模块集成实践,特别适用于具备PM或SD基础的中阶顾问快速建立服务管理知识框架。课件以PPT形式呈…

2026/10/25 0:42:50

VMware Thin卷VMDK空间回收:停机与在线两方案

简介:这份文档面向使用 VMware 虚拟化平台、受精简置备磁盘“占而不放”问题困扰的运维人员与虚拟化学习者,聚焦 vmfs5 文件系统不支持自动回收空间这一常见痛点,给出可落地的空间回收思路。包内仅含 1 个 docx 文件,压缩包约 408…

2026/10/25 0:42:50

IEC 61131-3 编程标准实战:五种语言选型、POU 设计与跨品牌移植经验

1. 从继电器柜到软逻辑:IEC 61131到底解决了谁的痛点刚入行那会儿,我接手过一个老产线的改造项目。电气柜里密密麻麻的继电器、时间继电器、计数器,接线端子排长得像蜈蚣,排查一个故障得拿着图纸一根线一根线地量。老师傅跟我说&a…

2026/10/25 0:42:50

网约车小程序源码闭环:订单状态机与WebSocket位置推送

简介:这份小程序源码包以模仿滴滴打车核心流程为目标,面向具备基础微信小程序开发能力、希望理解出行类应用实现的学习者。项目围绕叫车、订单、个人中心等场景组织页面,涉及地理位置获取、地图展示、路线规划、实时通信、支付与订单状态管理…

2026/10/25 0:37:49

金蝶云星空生产管理:规则驱动的数字作战室

简介:本资源是金蝶云星空V7.3制造领域核心模块——生产管理的官方培训课件,面向制造业企业ERP实施顾问、生产计划员、车间信息化管理员及金蝶系统运维人员,聚焦解决生产订单全周期管控、物料齐套分析、领退补料协同、在制过程追溯等典型业务痛…

2026/10/25 0:02:22

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/25 0:02:23

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/25 0:02:23

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/25 0:02:22

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/25 0:02:23

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/25 0:02:23

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

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

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

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