新闻详情

新闻详情

首页 / 资讯中心 / 详情

【双指针-5】31.下一个排列

发布时间:2026/9/28 4:51:08来源:尧图网络
【双指针-5】31.下一个排列
题目描述整数数组的一个排列就是将其所有成员以序列或线性顺序排列。例如arr [1,2,3]以下这些都可以视作arr的排列[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1]。整数数组的下一个排列是指其整数的下一个字典序更大的排列。更正式地如果数组的所有排列根据其字典顺序从小到大排列在一个容器中那么数组的下一个排列就是在这个有序容器中排在它后面的那个排列。如果不存在下一个更大的排列那么这个数组必须重排为字典序最小的排列即其元素按升序排列。例如arr [1,2,3]的下一个排列是[1,3,2]。类似地arr [2,3,1]的下一个排列是[3,1,2]。而arr [3,2,1]的下一个排列是[1,2,3]因为[3,2,1]不存在一个字典序更大的排列。给你一个整数数组nums找出nums的下一个排列。必须原地修改只允许使用额外常数空间。示例 1输入nums [1,2,3]输出[1,3,2]示例 2输入nums [3,2,1]输出[1,2,3]示例 3输入nums [1,1,5]输出[1,5,1]解题思路最优解法双指针 反转思路从右往左找第一个升序对nums[i] nums[i1]从右往左找第一个大于nums[i]的数nums[j]交换nums[i]和nums[j]然后反转i1到末尾具体过程示例nums [1, 2, 3]第1步: 从右往左找升序对 3 2? 是继续 2 1? 是继续 1 2? 是i 0nums[0]1 nums[1]2 第2步: 从右往左找第一个 nums[0]1 的数 3 1? 是j 2 第3步: 交换 nums[0] 和 nums[2] [3, 2, 1] 第4步: 反转 i11 到末尾 [3, 1, 2] ✅nums [3, 2, 1]第1步: 从右往左找升序对 2 1? 是 3 2? 是 没有升序对i -1 第2步: 直接反转整个数组 [1, 2, 3] ✅代码实现class Solution { public: void nextPermutation(vectorint nums) { int n nums.size(); // 第1步从右往左找第一个升序对 int i n - 2; while (i 0 nums[i] nums[i 1]) { i--; } // 第2步如果找到了升序对从右往左找第一个大于 nums[i] 的数 if (i 0) { int j n - 1; while (nums[j] nums[i]) { j--; } swap(nums[i], nums[j]); } // 第3步反转 i1 到末尾 reverse(nums.begin() i 1, nums.end()); } };复杂度分析维度复杂度说明时间复杂度O(n)最多遍历数组三次空间复杂度O(1)原地修改只用常数空间优缺点优点缺点✅ 时间复杂度 O(n)最优❌ 思路不直观需要理解字典序✅ 空间复杂度 O(1)原地修改❌ 边界条件多如i -1✅ 代码简洁❌ 容易写错交换和反转的范围总结要点说明最优解法三步走找升序对 → 找更大值交换 → 反转后缀时间复杂度O(n)空间复杂度O(1)关键步骤i从右往左找nums[i] nums[i1]边界处理i -1时直接反转整个数组
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

立创EDA中GKO层与机械层的核心区别与正确用法 2026/9/28 6:42:07

立创EDA中GKO层与机械层的核心区别与正确用法

1. 为什么刚上手立创EDA的工程师总在“画板框”时栽跟头?我带过三届电子系实习学生,几乎每届都有人拿着刚导出的Gerber文件跑来问我:“老师,嘉立创工厂说我的板子没定义外形,拒收了——可我在立创EDA里明明画了粗线啊&…

阅读更多 →
RTX 4060模型优化实战:量化剪枝蒸馏协同部署 2026/9/28 6:42:07

RTX 4060模型优化实战:量化剪枝蒸馏协同部署

1. 这不是“一键优化”工具,而是一套面向生产环境的模型瘦身工作流“Model-Optimizer”这个名称听起来像某个GUI软件的安装包,但实际在工业级AI部署场景中,它从来不是一个开箱即用的按钮——而是一套融合量化(quantization&#x…

阅读更多 →
大模型推理优化实战:从PyTorch到TensorRT/vLLM的七层工程方法论 2026/9/28 6:42:07

大模型推理优化实战:从PyTorch到TensorRT/vLLM的七层工程方法论

1. 项目概述:Model-Optimizer不是工具名,而是一类工程实践的统称“Model-Optimizer”这个词在当前AI部署生态里,根本不是一个官方发布的软件产品,也不是某个开源项目的标准命名——它没有GitHub仓库、没有PyPI包、没有Docker Hub镜…

阅读更多 →
开源AI Agent Runtime客服知识库:问答卡片设计与生产实战 2026/9/28 6:42:07

开源AI Agent Runtime客服知识库:问答卡片设计与生产实战

1. 客服知识为什么需要“问答卡片”这种形态做过客服系统的人都有一个共同感受:知识库里的文档写得再全,一线客服在跟客户对话的那几十秒里,根本没时间翻。一份三千字的《退换货政策说明》,客服真正需要的可能只是“七天无理由从签…

阅读更多 →
3个案例揭秘wordpress删除数据风险与建站报价真相 2026/9/28 6:42:07

3个案例揭秘wordpress删除数据风险与建站报价真相

3个案例揭秘wordpress删除数据风险与建站报价真相 很多老板想自己折腾网站,手里没代码基础,看着后台那些“删除”按钮就心慌。怕点错了全站崩盘,更怕数据没了找不回。其实这背后藏着巨大的坑,也是为什么正规 建站报价…

阅读更多 →
php中英双语网站源码源码下载 2026/9/28 6:42:01

php中英双语网站源码源码下载

3套PHP中英双语源码实测:防黑挂马实战与选型避坑 昨晚凌晨三点,手机疯狂震动,客户急得语无伦次:“网站被黑了!首页全是博彩广告,后台密码改不了!” 那一刻,我盯着监控日志,心里清楚这绝非偶发事件。…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉