整数数组的下一个排列,是指下一个字典序更大的排列,如123下一个排列是132
以下算法思想是c++ next_permutation的实现
以【1,2,3,8,5,7,6,4】的下一个排列为例
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
| class Solution { public: void nextPermutation(vector<int>& nums) { int n = nums.size(); int i = n - 2, j = n - 1, k = n - 1; while(i >= 0 && nums[i] >= nums[j]) { i--; j--; } if (i >= 0) { while(nums[i] >= nums[k]) { k--; } swap(nums[i], nums[k]); } int l = j, r = n - 1; while(l < r) { swap(nums[l], nums[r]); l++; r--; } } };
|