【LeetCode】031. Next Permutation

题目:

Implement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers.

If such arrangement is not possible, it must rearrange it as the lowest possible order (ie, sorted in ascending order).

The replacement must be in-place, do not allocate extra memory.

Here are some examples. Inputs are in the left-hand column and its corresponding outputs are in the right-hand column.

1,2,3 → 1,3,2
3,2,1 → 1,2,3
1,1,5 → 1,5,1

  

题解:

  from here

Solution 1 () 

class Solution {
public:void nextPermutation(vector<int>& nums) {int n = nums.size();for(int i=n-2; i>=0; --i) {if(nums[i]>=nums[i+1]) continue;int j = n-1;for(; j>i; --j) {if(nums[j]>nums[i]) break;}swap(nums[i], nums[j]);reverse(nums.begin()+i+1, nums.end());return;            }reverse(nums.begin(), nums.end());}
};

  from here

Solution 2 ()

class Solution {
public:void nextPermutation(vector<int> &nums) {if (nums.empty()) return;  // in reverse order, find the first number which is in increasing trend (we call it violated number here)int i;for (i = nums.size()-2; i >= 0; --i) {if (nums[i] < nums[i+1]) break;}// reverse all the numbers after violated numberreverse(nums.begin()+i+1, nums.end());// if violated number not found, because we have reversed the whole array, then we are done!if (i == -1) return;// else binary search find the first number larger than the violated numberauto itr = upper_bound(nums.begin()+i+1, nums.end(), nums[i]);// swap them, done!swap(nums[i], *itr);}
};

  Solution 3-5 are from here (Solution 2 和 Solution 3 其实是一个解法 )

Solution 3 ()

class Solution {
public: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; j<k; j++, k--)swap(nums[j], nums[k]);if (i > 0) {k = i--;while (nums[k] <= nums[i])k++;swap(nums[i], nums[k]);}}
};

  使用STL库函数

Solution 4 ()

class Solution {
public:void nextPermutation(vector<int>& nums) {auto i = is_sorted_until(nums.rbegin(), nums.rend());if (i != nums.rend())swap(*i, *upper_bound(nums.rbegin(), i, *i));reverse(nums.rbegin(), i);}
}; 

   使用STL库函数

Solution 5 ()

class Solution {
public:void nextPermutation(vector<int>& nums) {next_permutation(begin(nums), end(nums));}
};

 

转载于:https://www.cnblogs.com/Atanisi/p/6759466.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/572535.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql ndb是什么_MySQL NDB Cluster介绍

最近翻译了好几篇关于NDB的文章&#xff0c;相信有很多人会有疑问&#xff0c;NDB Cluster究竟是个什么东西&#xff1f;它是一款新产品吗&#xff1f;它和InnoDB Cluster有什么不同&#xff1f;它是MySQL吗&#xff1f;它怎么使用&#xff1f;在这篇文章里&#xff0c;我将为大…

jQuery遍历,数组,集合

使用了jquery有段时间了&#xff0c;整理下jquery中的遍历问题。 1.jquery 遍历对象 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">< HTML> <HEAD> <TITLE> New Document </TITLE> <script language"…

orm和mysql_orm与mysql

一. orm执行原生sql语句在模型查询API不够用的情况下&#xff0c;我们还可以使用原始的SQL语句进行查询。Django 提供两种方法使用原始SQL进行查询&#xff1a;一种是使用raw()方法&#xff0c;进行原始SQL查询并返回模型实例&#xff1b;另一种是完全避开模型层&#xff0c;直…

课程作业2

作业二 题目 编写一个程序&#xff0c;要求根据给定的圆的半径求圆的面积&#xff0c;并将求得的结果打印出来。 要求&#xff1a; 输入输出采用cin和cout。 建立一个工程&#xff0c;将程序写成两个.cpp和一个.h的形式。 要求程序必须要对变量的定义和各个函数模块进行注释。 …

webform中提交按钮同时执行更新和插入操作_软件测试中的功能测试点(三)

26.输入法半角全角检查再输入信息中&#xff0c;输入一个或连串空格&#xff0c;查看系统如何处理&#xff0c;如对于要求输入符点型数据的项中&#xff0c;输入全角的小数点&#xff08;“。”或“.”&#xff0c;如4.5&#xff09;&#xff1b;输入全角的空格等。 27.密码检查…

PAT甲题题解-1091. Acute Stroke (30)-BFS

题意&#xff1a;给定三维数组&#xff0c;0表示正常&#xff0c;1表示有肿瘤块&#xff0c;肿瘤块的区域>t才算是肿瘤&#xff0c;求所有肿瘤块的体积和 这道题一开始就想到了dfs或者bfs&#xff0c;但当时看数据量挺大的&#xff0c;以为会导致栈溢出&#xff0c;所以并没…

python如何获取请求的url_听说你在学习:如何通过代码请求URL地址

最近比较忙碌&#xff0c;都没有时间更新公众号文章&#xff0c;表示比较惭愧。最近翻看了一下自己的博客&#xff0c;发现这篇文章的内容还是挺实用&#xff0c;所以&#xff0c;想分享给大家&#xff0c;欢迎阅读。在后续&#xff0c;我会从一个范围的角度进行编写一系列文章…

在sql中将表建在别的构件中用什么语句_SQL实战

学习主题&#xff1a;SQL学习目标&#xff1a;1 掌握子查询1. 什么是子查询(1) 什么是子查询&#xff1f;答&#xff1a;当一个查询是另一个查询的条件时&#xff0c;称之为子查询。简而言之&#xff1a;嵌套查询(2) 子查询执行的顺序是什么&#xff1f;答&#xff1a;先进行内…

数据结构入门之链表(C语言实现)

这篇文章主要是根据《数据结构与算法分析--C语言描述》一书的链表章节内容所写&#xff0c;该书作者给出了链表ADT的一些方法&#xff0c;但是并没有给出所有方法的实现。在学习的过程中将练习的代码记录在文章中&#xff0c;并添加了一些在测试中需要的函数&#xff0c;因此可…

centos radius mysql_centos6.5下安装freeradius2.2.9+mysql

平台centos6.5 x86_641&#xff0c;安装源并更新rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpmyum update -y2&#xff0c;安装相关库yum -y install wget expat-devel gcc make gmp-devel gmp pkgconfig perl libpcap gcc-c logrotate…

二手书城开发步骤

请点击进入 1、二手书城设计 2、搭建页面框架 3、构建bass服务及model 4、淘书页详细 5、购物车页详细 6、订单页详细 7、我的页详细 8、发布页详细转载于:https://www.cnblogs.com/xiaoxiaohabi/p/6789349.html

mongoose mysql_mongoose入门

mongoose入门MongoDB是一个开源的NoSQL数据库&#xff0c;相比MySQL那样的关系型数据库&#xff0c;它更显得轻巧、灵活&#xff0c;非常适合在数据规模很大、事务性不强的场合下使用。同时它也是一个对象数据库&#xff0c;没有表、行等概念&#xff0c;也没有固定的模式和结构…

php 验证码需开启gd2

转载于:https://www.cnblogs.com/zhangj391/p/6794555.html

pcm 降采样_Android_android downsample降低音频采样频率代码,使用Android AudioRecord 录制PCM文 - phpStudy...

android downsample降低音频采样频率代码使用Android AudioRecord 录制PCM文件&#xff0c;android SDK保证在所有设备上都支持的采样频率只有44100HZ&#xff0c;所以如果想得到其他采样频率的PCM数据&#xff0c;有几种方式&#xff1a;1.在设备上尝试可用的采样频率&#xf…

C++中没有定义类的引用。

在有时候由于类太大。须要在类在后面定义&#xff1b; 比如&#xff1a; class Y{void f(X); }; class X{ //一些成员数据和函数};//error由于c要求不论什么一个变量在引用之前必须声明。。在上述定义中我们能够调换两者的顺序来实现。 可是假设形成了循环&#xff1f; class X…

python中不能使用下标运算的有哪些_Python中最常见的10个问题(列表)

列表是Python中使用最多的一种数据结果&#xff0c;如何高效操作列表是提高代码运行效率的关键&#xff0c;这篇文章列出了10个常用的列表操作&#xff0c;希望对你有帮助。注意&#xff1a;很多人学Python过程中会遇到各种烦恼问题&#xff0c;没有人帮答疑。为此小编建了个Py…

Spring:与Redis的集成

一个月没写过博客了&#xff0c;一直想记录一下之前学习的Redis的有关知识&#xff0c;但是因为四月太过于慵懒和忙碌&#xff0c;所以一直没有什么机会&#xff0c;今天就来讲讲&#xff0c;如何使用Spring当中的Spring-data-redis去与Redis这个Nosql数据库集成吧。 首先先简单…

python中如何将字典直接变成二维数组_python基础知识(列表、字典、二维数组)...

记得改参数&#xff01;&#xff01;&#xff01;(1)简述列表(list)结构的特点。List(列表)List的元素以线性方式存储&#xff0c;可以存放重复对象&#xff0c;List主要有以下两个实现类&#xff1a;ArrayList : 长度可变的数组&#xff0c;可以对元素进行随机的访问&#xff…

内置对象和自定义对象的原型链

内置对象的原型链 新增属性 Object.prototype.mytest function() {alert("123");}var o new Object();o.mytest();重写属性 Object.prototype.toString function(){alert("破话之王");}o.toString();转载于:https://www.cnblogs.com/Abner5/p/6798630.h…

mysql将不同行数结果合并成多列_将多行合并到mysql中的一行和多列

我正在MYSQL工作,需要将用户数据提取到一个视图中.我将使用电子邮件客户端中的数据,因此我无法在应用程序层中执行此操作.问题是用户的每个数据字段都包含在单独的行中(这是Wordpress如何设置数据结构).例如,wp_usermeta为每个用户提供了多行数据,如下所示&#xff1a;user_id …