Day22: [LeetCode中等] 31.下一个排列
题源:
来自leetcode题库:
https://leetcode-cn.com/problems/next-permutation/
思路:
很有意思的一道题,代码简单,难的是思维的过程。想知道的去看题解吧,懒得说了(哈哈,我这博客好随意)。
代码:
dirty code凑合看吧
class Solution {
public:
void nextPermutation(vector<int>& nums) {
int Len=nums.size();
if(Len==0||Len==1) return;
int i=Len-2;
bool success=false;
for(;i>=0;i--){
int x=nums[i];
int min=INT_MAX;
int min_flag=-1;
for(int j=i+1;j<Len;j++){
if(nums[j]>x) {
success=true;
if(min>nums[j]){
min=nums[j];
min_flag=j;
}
}
}
if(success){
int temp=nums[i];
nums[i]=nums[min_flag];
nums[min_flag]=temp;
sort(nums.begin()+i+1,nums.end());
return;
}
}
sort(nums.begin(),nums.end());
return;
}
};