leetcode:下一个排列

class Solution { public: void nextPermutation(vector<int>& nums) { int n=nums.size(); int i=n-2; while(i>=0 && nums[i]>=nums[i+1]){//从后向前,找到第一个降序的,一直升序说明最大 i--; } if(i<0) sort(nums.begin(),nums.end()); else{ int j=n-1; while(j>i && nums[j]<=nums[i]){//从后向之前标记的位置,找到第一个比标记位小的 j--; } swap(nums[i],nums[j]); reverse(nums.begin()+i+1,nums.end()); } } };

浙公网安备 33010602011771号