Kimi    LeetCode 31. 下一个排列 Rust实现 LeetCode 31. 下一个排列 — Rust 实现核心思路下一个排列遵循字典序规则分四步完成找拐点从右向左找到第一个左边小于右边的位置找替换数从右向左找到第一个大于拐点值的数交换交换这两个数反转后缀将拐点之后的子数组反转使其变为最小升序若找不到拐点说明已是最大排列直接反转整个数组。implSolution{pubfnnext_permutation(nums:mutVeci32){letnnums.len();ifn2{return;}// Step 1: 从右向左找第一个升序对 nums[i-1] nums[i]// i 最终指向拐点右侧的起始位置letmutin-1;whilei0nums[i-1]nums[i]{i-1;}// Step 2 3: 如果找到了拐点从右找第一个大于 nums[i-1] 的数并交换ifi0{letmutjn-1;whilej0nums[j]nums[i-1]{j-1;}nums.swap(i-1,j);}// Step 4: 反转 i 到末尾的子数组// 若 i 0完全降序则反转整个数组nums[i..].reverse();}}执行流程图解以nums [1, 2, 7, 4, 3, 1]为例步骤 操作 数组状态初始 —[1, 2, 7, 4, 3, 1]Step 1 从右扫描1 3 4 7都降序直到2 7i 2指向 7 —Step 2 从右找第一个 nums[1]21, 3中3 2j 4—Step 3 交换nums[1]和nums[4]2 ↔ 3[1, 3, 7, 4, 2, 1]Step 4 反转nums[2..][7,4,2,1]→[1,2,4,7][1, 3, 1, 2, 4, 7]复杂度分析指标 复杂度 说明时间 O(n) 最多三次线性扫描 一次反转空间 O(1) 原地修改reverse()也是 O(1) 额外空间Rust 特有关键点避免下溢使用usize索引时若从n-2递减到-1会下溢。本实现让i从n-1开始通过nums[i-1] nums[i]判断循环条件i 0保证不会下溢。nums[i..].reverse()Rust 标准库直接提供切片反转原地操作且时间 O(k)、空间 O(1)比手写双指针交换更简洁。nums.swap(a, b)标准库提供的原地交换无需临时变量语义清晰。拐点定位最终i指向的是后缀的起始位置而非拐点本身。拐点是i-1这样设计使得最后反转区间统一为nums[i..]逻辑更干净。

相关新闻

最新新闻

降AI率平台对比:知网和维普同篇论文相差22%原因解析

降AI率平台对比:知网和维普同篇论文相差22%原因解析

降AI率平台对比:知网和维普同篇论文相差22%原因解析 降AI率同一篇论文,知网检测12%,维普检测34%——这种大幅度差距让很多同学困惑。用嘎嘎降AI(www.aigcleaner.com)降AI率之后,知网达标了但维普还超标&am…

2026/9/2 7:43:11
Qt多媒体与图形模块实战:从播放器到自定义UI的完整开发指南

Qt多媒体与图形模块实战:从播放器到自定义UI的完整开发指南

1. 先搞清楚 Qt 多媒体与图形模块到底能做什么,别被名字唬住 很多刚接触 Qt 的同学,看到“多媒体”和“图形”这两个词,第一反应可能是“做播放器”和“画图”。这个理解对,但太窄了。在 Qt 里,这两个模块是构建现代桌…

2026/9/2 7:43:11
Oracle体系架构详解:从内存进程到存储优化

Oracle体系架构详解:从内存进程到存储优化

Oracle的体系架构,是很多DBA和开发者的分水岭。刚接触时你可能觉得它只是一堆术语:SGA、PGA、DBWn、LGWR、表空间、数据文件、控制文件、重做日志……背下来不难,难的是真正出现问题时,能不能顺着架构找原因。比如连接数打满&…

2026/9/2 7:43:11
STM32串口空闲中断+DMA稳态接收实战指南

STM32串口空闲中断+DMA稳态接收实战指南

简介:本资源是面向STM32嵌入式开发者的实战型工程包,聚焦STM32F407平台下高可靠串口通信的进阶实现——通过HAL库整合DMA接收/发送与串口空闲中断机制,解决大数据量、低延迟场景中CPU频繁中断响应导致的效率瓶颈问题,适用于工业控…

2026/9/2 7:43:11
电赛H题自动行驶小车:Keil嵌入式实时控制实战解析

电赛H题自动行驶小车:Keil嵌入式实时控制实战解析

简介:本资源是2024年全国大学生电子设计竞赛H题‘自动行驶小车’的完整工程实现方案,面向嵌入式开发初学者、电赛备赛学生及STM32实践者,聚焦路径识别、电机闭环控制、无线通信与多传感器融合等核心难点。压缩包共610个文件,以201…

2026/9/2 7:43:11
MATLAB仿真实现Gardner定时同步:原理、代码与调优全解析

MATLAB仿真实现Gardner定时同步:原理、代码与调优全解析

简介:本资源是一套面向通信与信号处理方向本硕博学生及科研人员的Gardner环定时同步算法实践材料,聚焦数字接收机中关键的符号定时恢复问题,适用于MATLAB编程入门与进阶学习。压缩包共3个文件(206KB),含核心…

2026/9/2 7:38:11