当前位置: 首页 > news >正文

下一个排列 的 思路总结

文章目录

在这里插入图片描述

  • 思路分析
    • 倒序遍历:题目要求的是下一个排列,那么肯定数字的跳跃不能太大,所以可以比较好确定的是,遍历的顺序是倒序遍历
    • 比较方向:对于每一个数字,需要找到右边最大的比它小的数字,然后交换之后,剩余的数字进行升序排序

灵神题解

class Solution {
public:void nextPermutation(vector<int>& nums) {int n = nums.size();// 第一步:从右向左找到第一个小于右侧相邻数字的数 nums[i]int i = n - 2;while (i >= 0 && nums[i] >= nums[i + 1]) {i--;}// 如果找到了,进入第二步;否则跳过第二步,反转整个数组if (i >= 0) {// 第二步:从右向左找到 nums[i] 右边最小的大于 nums[i] 的数 nums[j]int j = n - 1;while (nums[j] <= nums[i]) {j--;}// 交换 nums[i] 和 nums[j]swap(nums[i], nums[j]);}// 第三步:反转 [i+1, n-1](如果上面跳过第二步,此时 i = -1)reverse(nums.begin() + i + 1, nums.end());}
};

错误代码示例

  • 我开始写的思路是,倒序遍历的思路没问题,但是找到合适的交换对象的时候,我找的是每一个数字左边第一个比它小的数字,然后交换的位置的右边再进行升序排列

  • 错误分析:下一个排列,应该是尽量操作右边的数字,并且我们是倒序遍历的,所以遍历过的部分的情况可以知道,所以寻找的交换顺序的时候,还是往右边进行考虑

http://www.dtcms.com/a/325511.html

相关文章:

  • OrbStack 入门教程:macOS 上的轻量级容器与虚拟机管理工具
  • macOS 搭建 Gitea 私有 Git 服务器教程
  • Mac配置服务器工具Royal TSX
  • SDI设计中,为何SD-SDI模式下,接收器用DRU实现,在3G-SDI模式下,使用transceiver实现
  • 2508C++,检测S模式
  • Docker 网络-单机版
  • 华为watch5心率变异性测量法的底层逻辑
  • 『“无恙心宽”,梗痛不常』——爱上古中医(12)(健康生活是coder抒写优质代码的前提条件——《黄帝内经》伴读学习纪要)
  • 【C语言】知识详细梳理!共计30万余字!
  • 《 慢 SQL 分析与 SQL 优化实战指南》
  • 用 Docker 安装并启动 Redis:从入门到实战
  • Flutter Provider 状态管理全面解析与实战应用:从入门到精通
  • 帝国理工学院团队研发:Missense3D-PTMdb—— 解析遗传变异与翻译后修饰的交互式工具
  • 基于开源模型构建医疗疾病大模型:从理论到实践
  • 【08】华汉伟业——华汉伟业 嵌入式 C笔试,校招,题目记录及解析
  • 聊天室全栈开发-保姆级教程(Node.js+Websocket+Redis+HTML+CSS)
  • Nginx负载均衡教程:应对网站流量暴增的实战指南 (2025)
  • C#项目上传git常见的忽略项目和推荐配置
  • MySQL,Redis重点面试题
  • SharePlay确保最佳游戏体验
  • [Shell编程] Shell 编程之免交互
  • 【CV 目标检测】①——目标检测概述
  • 每日五个pyecharts可视化图表-line:从入门到精通 (3)
  • 如何网络“钓鱼”,钓鱼鱼饵生成工具CobaltStrike使用
  • LangVM —— 一站式多语言版本管理工具,让 Java、Python、Go、Node.js 切换更丝滑
  • 运维学习Day21——LAMP/LNMP 最佳实践
  • Django Request 与 DRF Request 的区别
  • 从 GPT-2 到 gpt-oss:架构进步分析
  • 企业级 IT 运维服务平台数据备份方案:基于 rsync 的自动化实现
  • 时钟频率与带宽