代码:
class Solution41_meduim {
public:
void nextPermutation(vector<int>& nums) {
if (nums.empty())
return;
int subMax = nums[nums.size() - 1];
for (int i = nums.size() - 2; i >= 0; i--) {
if (subMax > nums[i]) {
// 逆序查找最小元素进行交换
vector<int> minItem({0, INT_MAX});
for (int j = i; j < nums.size(); j++) {
if (nums[j] > nums[i]) {
if (minItem[1] > nums[j]) {
minItem[0] = j;
minItem[1] = nums[j];
}
}
}
// 交换元素
swap(nums[i], nums[minItem[0]]);
//排序
sort(nums.begin() + i + 1, nums.end());
return;
}
subMax = nums[i];
}
sort(nums.begin(), nums.end());
}
};