首页 > 其他分享 >【LeetCode Hot 100】31. 下一个排列

【LeetCode Hot 100】31. 下一个排列

时间:2024-10-14 11:10:11浏览次数:6  
标签:end nums STL 31 -- Hot 升序 100 降序

https://leetcode.cn/problems/next-permutation/description/

这里下个排列的意思是按字典序的排列,C++ STL中算法默认也是按照字典序排列来操作。C++ STL中提供了对应的接口next_permutation,下面记录一下力扣给的题解,这种方法允许数据重复,据说STL也是采用的这种方法。

  1. 从后向前查找第一个相邻的升序元素对(i,j),它们满足nums[i]<nums[j],此时[j,end)必然是降序。如果找不到符合要求的升序元素对,说明当前整个序列是降序,直接跳到步骤4。
  2. [j,end)中从后往前查找第一个满足nums[i]<nums[k]k
  3. nums[i]nums[k]交换。
  4. 可以断定此时[j,end)必然是降序,翻转[j,end)元素,使其变成升序。
class Solution {
public:
    void nextPermutation(vector<int>& nums) {
        int n = nums.size();
        if (n <= 1) {
            return;
        }

        int i = n - 2, j = n - 1, k = n - 1;
        while (i >= 0 && nums[i] >= nums[j]) {
            i--, j--;
        }
        if (i >= 0) {
            while (nums[i] >= nums[k]) {
                k--;
            }
            swap(nums[i], nums[k]);
        }

        // reverse nums[j:end]
        reverse(nums.begin() + j, nums.end());
    }
};

标签:end,nums,STL,31,--,Hot,升序,100,降序
From: https://www.cnblogs.com/louistang0524/p/18463665

相关文章

  • 2024.10.14 1005版
    起于《海奥华预言》的思考◆地球管理结构和参考持续更新中...... 英文地址:https://github.com/zhuyongzhe/Earth/tags中文地址:https://www.cnblogs.com/zhuyongzhe85作者:朱永哲 ---------------------------------------------------------------------------------......
  • 100基于java ssm springboot体检预约系统体检套餐报告体检论坛(源码+文档+运行视频+讲
    项目技术:Springboot+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:windows......
  • 【Python开发技术之PyQt5精品教学】第31课--PyQt5 QCalendar小工具
    PyQt5QCalendar小工具QCalendar小工具是一个有用的日期选择器控件。它提供了基于月份的视图。用户可以通过鼠标或键盘选择日期,默认为今天的日期。还可以指定日历的日期范围。以下是这个类的一些实用方法:序号方法和描述1setDateRange() :设置可选择的较低和较高日期。2setFi......
  • 2024-2025-1 202421310 《计算机基础与程序设计》第3周学习总结
    学期(如2024-2025-1)学号(如:20241300)《计算机基础与程序设计》第X周学习总结作业信息|这个作业属于哪个课程|https://www.cnblogs.com/rocedu/p/9577842.html|这个作业要求在哪里|https://www.cnblogs.com/rocedu/p/9577842.html#WEEK03|这个作业的目标|数字分类与计数法位......
  • 【趣学C语言和数据结构100例】
    【趣学C语言和数据结构100例】问题描述找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无......
  • 2024-2025 20241313刘鸣宇《计算机基础与程序设计》第三周学习总结
    1.阅读《C语言程序设计》,对有疑问的地方寻找AI进行解答2.3.《计算机科学概论》学习总结(1)第二章学习了不同进制(二进制,十进制,八进制,十六进制)之间的转换学习了其他技术系统中的运算规则(2)第三章1.信息与数据的区别:信息是数据的一种2.为何进行数据压缩:网络具有固定的带宽限制,压......
  • 一键生成证件照的开源利器:HivisionIDPhotos使用教程
    HivisionIDPhotos使用教程:一键生成证件照的开源利器HivisionIDPhotos 是一款开源的、轻量级且高效的AI工具,专注于证件照的自动生成。通过这一工具,用户只需上传一张自拍或其他照片,便能快速生成标准尺寸的证件照,免去前往照相馆的麻烦。它利用先进的图像处理技术,如智能抠图......
  • 2024-2025-1 20241312 《计算机基础与程序设计》第3周学习总结
    |这个作业属于哪个课程|https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP|这个作业要求在哪里|https://www.cnblogs.com/rocedu/p/9577842.html#WEEK03|这个作业的目标|数字分类与计数法位置计数法进制转换模拟数据与数字数据压缩与解压数字化信息安全|作业正文|h......
  • height:100%,height:100vh什么区别呢
    height:100%; 和 height:100vh; 是设置元素高度的两种不同方式height:100%;:这个属性会使元素的高度等于其父元素的高度。也就是说,元素的高度将会占据其父元素的百分之百高度。值为百分比时,实际的高度取决于其父元素的高度。如果父元素没有显式地设置高度,则 height:......
  • 2024-2025-1 20241314 《计算机基础与程序设计》第3周学习总结
    这个作业属于哪个课程<班级的链接>(2024-2025-1-计算机基础与程序设计)这个作业要求在哪里2024-2025-1计算机基础与程序设计第三周作业这个作业的目标<巩固知识,拓展能力>作业正文https://www.cnblogs.com/serene99/p/18462624教材学习内容总结一门与电路在......