整数数组的下一个排列,是指下一个字典序更大的排列,如123下一个排列是132 以下算法思想是c++ next_permutation的实现 以【1,2,3,8,5,7,6,4】的下一个排列为例 1234567891011121314151617181920212223242526272829class Solution {public: void nextPermutation(vector<int>& nums) { int n = nums.size(); int i = n - 2, j = n - 1, k = n - 1; //1、从后往前找第一对相邻升序对,是5和7 while(i >= 0 && nums[i] >= nums[j]) { i--; j--; } //2、从后往前找nums[k] > nums[i] 是6,便交换得:【1,2,3,8,6,7,5,4】 if (i >= 0) { while(nums[i] >= nums[k]) { k--; } //3、交换 swap(nums[i], nums[k]); } //4、nums[j]-nums[k]升序 【1,2,3,8,6,4,5,7】 int l = j, r = n - 1; while(l < r) { swap(nums[l], nums[r]); l++; r--; } }}; ← Previous Post Next Post → FEATURED TAGS 算法 FRIENDS 肖喵喵 Hux Blog