1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
class Solution { public: void nextPermutation(vector<int>& nums) { vector<int>::iterator i, i1, i2; if(nums.begin() == nums.end()) return ; i = nums.end(); if(nums.begin() == --i) return ;
for(;;) { i1 = i; if(*--i < *i1) { i2 = nums.end(); while(!(*i < *--i2)) ; iter_swap(i, i2); reverse(i1, nums.end()); return; } if(i == nums.begin()) { reverse(nums.begin(), nums.end()); return ; } } } };
|