原题链接:31. 下一个排列
solution:脑筋急转弯的题 //看了题解才会到的思路orz
class Solution {
public:
void nextPermutation(vector<int>& nums) {
int k = nums.size() - 1;
while(k && nums[k - 1] >= nums[k]) k--; //k大于0且满足下一个数大于等于这个数,k--
if(k == 0){ //k == 0说明数组完全降序排列
sort(nums.begin(),nums.end());
return;
}
else{
int t = k;
while(t < nums.size() && nums[t] > nums[k - 1]) t++;
swap(nums[t - 1],nums[k - 1]);
reverse(nums.begin() + k,nums.end());
}
}
};