给定一个整数数组来表示排列,找出其之后的一个排列。
注意事项
排列中可能包含重复的整数
样例
给出排列[1,3,2,3],其下一个排列是[1,3,3,2]
给出排列[4,3,2,1],其下一个排列是[1,2,3,4]标签
排列 LintCode 版权所有
思路
从后往前找,找到第一对(i,j),使得 nums[i] < num[j] ,然后将两者交换后,后面部分排序即可。
code
class Solution {public: /** * @param nums: An array of integers * @return: An array of integers that's next permuation */ vector nextPermutation(vector &nums) { // write your code here int size = nums.size(), i = 0, j = 0; if(size == 0) { return vector (); } for(i=size-1; i>=0; i--) { for(j=size-1; j>i; j--) { if(nums[i]