class Solution { public: /** 由给出数组求得比其大一位的字典序排列-》大,则前面的小数要和后面的大数交换才能变大-》要变大得尽可能小,那么找到最小应该交换的位-》从后向前找到第 一个比后面的数小的数,与最后一个数交换(后面的数呈向前递增趋势,最后一个数最小)-》因为已经在一位上进行了变大,后面的位就要尽可能的小,即排序-》再把后面的数排序 */ vector<int> nextPermutation(vector<int>& nums) { if(nums.size() == 0 || nums.size() == 1){ return nums; } for(int i=nums.size()-2; i>=0; i--){ if(nums[i] < nums[i+1]){ swap(nums[i], nums[nums.size()-1]); sort(nums.begin()+i+1, nums.end()); return nums; }else{ continue; } } sort(nums.begin(), nums.end()); return nums; } };