首页 > 其他分享 >next_permutation的简单实现

next_permutation的简单实现

时间:2023-07-28 18:24:09浏览次数:31  
标签:nums int permutation next break -- 简单

next_permutation的简单实现

​ 首先需要从后往前找到第一对数字满足nums[i]<num[j], i<j. 此时记下这个i为l, 在从后往前找到第一个大于nums[l]的数字, 下标记为r. 此时交换nums[l], nums[r]. 然后对数组内l以后的内容进行反转. 如果找不到满足第一个条件的l, 则对全部数组进行反转.

void nextPermutation(vector<int>& nums) {
    int n = nums.size();
    int l = -1, r = -1;
    for (int i = n - 2; i >= 0; --i) {
        if (nums[i] < nums[i + 1]) {
            l = i;
            break;
        }
    }
    if (l != -1) {
        for (int i = n - 1; i >= 0; --i) {
            if (nums[i] > nums[l]) {
                r = i;
                break;
            }
        }
        swap(nums[l], nums[r]);
    }
    reverse(nums.begin() + l + 1, nums.end());
}

标签:nums,int,permutation,next,break,--,简单
From: https://www.cnblogs.com/wangyiming-rahim/p/17588602.html

相关文章

  • vue3拖拽插件vue-draggable-next
    -基于sortablejs;npm地址:https://www.npmjs.com/package/vue-draggable-next配置项:https://github.com/SortableJS/Sortable#options import{VueDraggableNextasDraggable}from'vue-draggable-next';components:{HeaderTitle,TitlePanel,Draggable},......
  • linux nginx 简单负载均衡 和多端口配置
    nginx负载均衡配置##Nginx需要访问linux文件系统,必须有文件系统的权限。Userroot代表nginx访问文件系统的权限是root用户权限。如果不开启权限,可能有404访问错误userroot;worker_processes1;events{worker_connections1024;}http{includem......
  • VuePress@next 使用数学公式插件
    VuePress@next使用数学公式插件搞了一个VuePress1.0的现在升级了一下,但是使用数学公式的插件老报错啊!经过不懈努力,终于搞定了。现在记录一下。VuePress介绍VuePress是一个以Markdown为中心的静态网站生成器。你可以使用Markdown来书写内容(如文档、博客等),然后VuePress......
  • Web Component 简单示例
    前言学习内容来源:https://www.youtube.com/watch?v=2I7uX8m0Ta0https://developer.mozilla.org/zh-CN/docs/Web/API/Web_components基本概念Customelement(自定义元素):class或者function,定义组件apiShadowDOM(影子DOM):用于将封装的“影子”DOM树附加到元素(与主文档DOM......
  • YAML+PyYAML笔记 2 | YAML缩进、分离、注释简单使用
    (2|YAML缩进、分离、注释简单使用)1简介YAML不是一种标记语言,而是一种数据格式;使用缩进和分离来表示数据结构,不需要使用额外的标记语言。2缩进使用缩进来表示嵌套关系;标识方式为使用空格;缩进必须使用相同数量的空格;比如以下每个列表项都由一个连字符开头,后面跟着一......
  • BIRT简单实例
    [url]http://www.360doc.com/content/10/1109/19/3715754_68004729.shtml[/url]BIRT是一个Eclipse-based开放源代码报表系统。它主要是用在基于Java与J2EE的Web应用程序上。BIRT主要由两部分组成:一个是基于Eclipse的报表设计和一个可以加到你应用服务的运行......
  • 一款专门针对高质量女性的易语言钓鱼样本简单分析
    由于一直没怎么分析过易语言的样本,想学习一下易语言的样本分析过程,正好最近碰见了一个易语言编写的样本,是一个专门针对人类高质量女性进行钓鱼的样本,正好拿来学习学习,笔者是一边学习一边分析,如有不对之处还望各位批评指正。该样本图标如下:好像和前段时间流行的某人类高质量男性留着......
  • 剑指 Offer 09. 用两个栈实现队列(简单)
    题目:classCQueue{public:stack<int>st1;stack<int>st2;CQueue(){}voidappendTail(intvalue){st1.push(value);}intdeleteHead(){if(st1.empty()&&st2.empty())return-1;......
  • 剑指 Offer 58 - I. 翻转单词顺序(简单)(简单个屁!)
    题目:classSolution{public:stringreverseWords(strings){//该方法利用递归栈的逆序将单词逆序stringword;//保存一个完整的单词if(s.empty())returnword;inti=0;while......
  • Sa-Token简单几行代码,优雅的实现 SpringBoot 鉴权
    一、添加依赖二、设置配置文件三、创建测试Controller:登录接口四、创建测试Controller:普通访问接口五、检验当前会话是否已经登录六、路由拦截鉴权七、自定义全局异常拦截添加依赖<dependency><groupId>cn.dev33</groupId><artifactId>......