给定一个整数数组来表示排列,找出其之后的一个排列。
样例
给出排列[1,3,2,3],其下一个排列是[1,3,3,2]
给出排列[4,3,2,1],其下一个排列是[1,2,3,4]
道理和上一个排列完全一样,只是交换的条件相反:
class Solution {
public:
/**
* @param nums: An array of integers
* @return: An array of integers that's next permuation
*/
vector<int> nextPermutation(vector<int> &nums) {
// write your code here
for (int i = nums.size()-1;i >= 0;i--) {
for (int j = nums.size()-1;j > i;j--) {
if (nums[j] > nums[i]) {
swap(nums[j],nums[i]);
reverse(nums.begin()+i+1,nums.end());
return nums;
}
}
}
reverse(nums.begin(),nums.end());
return nums;
}
};
网友评论