leetcode-31. 下一个排列
本文最后更新于:2022年8月31日 晚上
- 从后向前找,找非降序排列的第一个位置, nums[k-1] < nums[k]
- 从后向前找,找
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| class Solution { public: void nextPermutation(vector<int>& nums) { int k = nums.size() - 1; while (k > 0) { if (nums[k-1] < nums[k]) break; else k--; } if (k <= 0) reverse(nums.begin(), nums.end()); else { int t = nums.size() - 1; while (t > 0 && nums[t] <= nums[k - 1]) t--;
swap(nums[k-1], nums[t]); sort(nums.begin() + k, nums.end()); } } };
|