思路:
找规律。
实现:
1 class Solution 2 { 3 public: 4 void nextPermutation(vector<int>& nums) 5 { 6 int n = nums.size(); bool flg = false; 7 for (int i = n - 2; i >= 0; i--) 8 { 9 if (nums[i] < nums[i + 1]) 10 { 11 sort(nums.begin() + i + 1, nums.end()); 12 int p = upper_bound(nums.begin() + i + 1, nums.end(), nums[i]) - nums.begin(); 13 swap(nums[i], nums[p]); 14 flg = true; break; 15 } 16 } 17 if (!flg) sort(nums.begin(), nums.end()); 18 } 19 }