leetcode-31. 下一个排列

class Solution { public: void nextPermutation(vector<int>& nums) { int len = nums.size(); for(int i = len-1; i > 0 ; i--){ if(nums[i]> nums[i-1]){ sort(nums.begin()+i, nums.end()); // 定位到以后,对i以及后面的进行排序,排序完只需要知道第一个比nums[i-1]大的数即可 // 这个数是比nums[i-1]大最小的数 // if(nums[len-1]) for(int j = i; j < len; j++){ if(nums[j]>nums[i-1]){ int tmp = nums[j]; nums[j] = nums[i-1]; nums[i-1] = tmp; return; } } } } sort(nums.begin(),nums.end()); return; } };

浙公网安备 33010602011771号