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()); } } };
标签:排列,nums,一个,int,&&,升序,leetcode From: https://www.cnblogs.com/lcstudy2021/p/17616749.html