class Solution {
public:
void nextPermutation(vector<int>& nums) {
int length = nums.size() - 1;
while( length > 0 )
{
if( nums[length - 1] < nums[length] )
break;
length --;
}
if( length == 0)
{
for( int i = 0, j = nums.size()-1; i < j; i++ ,j-- )
swap( nums[ i ], nums[ j ] );
return; //一定不要忘了。
}
int k = nums.size() - 1;
for( ; k >= length; k-- )
{
if( nums[ k ] > nums[ length - 1 ] )
break;
}
swap( nums[ k ], nums[ length - 1 ] );
sort(nums.begin() + length , nums.end());
}
};
public:
void nextPermutation(vector<int>& nums) {
int length = nums.size() - 1;
while( length > 0 )
{
if( nums[length - 1] < nums[length] )
break;
length --;
}
if( length == 0)
{
for( int i = 0, j = nums.size()-1; i < j; i++ ,j-- )
swap( nums[ i ], nums[ j ] );
return; //一定不要忘了。
}
int k = nums.size() - 1;
for( ; k >= length; k-- )
{
if( nums[ k ] > nums[ length - 1 ] )
break;
}
swap( nums[ k ], nums[ length - 1 ] );
sort(nums.begin() + length , nums.end());
}
};