Leetcode31. Next Permutation(字典序排列)

题目描述

  • 题目来自于leetcode 31,详细描述如下:


  • 大意是给定一个字符串序列,输出他下一个字典序序列

代码如下:

void nextPermutation(vector<int>& nums) {
        int i = nums.size() - 1, k = i;
        while (i > 0 && nums[i - 1] >= nums[i])    i--;
       
        for (int j = i; k > j; j++, k--)     swap(nums[j], nums[k]);
        
        if (i > 0) {
            k = i--;
            while (nums[i] >= nums[k])     k++;
            swap(nums[i], nums[k]);
        }
        
    }

分析

  1. 先倒叙查找,找到一个点i,保证i及其后面的所有字符组成的子串字典序最大
  2. 翻转这个子串
  3. 这个子串前面的字符C若是整个串的首字符,则返回,否则。将c与子串里面字典序次于c的字符进行交换(子串的字典序已是最小)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.把二元查找树转变成排序的双向链表 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不...
    曲终人散Li阅读 8,638评论 0 19
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,004评论 18 399
  • 又是一年清明过!一年、一年、又一年!妈妈!您离开我们已经第十个年头了。妈妈!我好想您! 您没离开我时...
    小洵阅读 3,146评论 0 0
  • 姓名:张义跃 245期谦虚1组学员 公司:本一设计 【日精进打卡第70天】 【知~学习】 《六项精进》诵读1遍共3...
    小小蛋儿阅读 838评论 0 0
  • 这个冬天,北京真是冷啊。即使今天是艳阳高照,但出去跑一圈那妖风吹得脸生疼,把帽子落在办公室,披着头发出门也是一个失...
    元气满满的慧慧酱阅读 4,453评论 4 4