class Solution {
public:
vector<int> nextPermutation(vector<int> &nums) {
if (nums.empty()) {
return {};
}
int idx = static_cast<int>(nums.size()) - 1;
for (int i = static_cast<int>(nums.size()) - 2; i >= 0; --i) {
if (nums[i] >= nums[i + 1]) {
idx = i;
} else {
break;
}
}
int swap_idx = idx; // easy to lose
while (swap_idx + 1 < nums.size() && nums[swap_idx + 1] > nums[idx - 1]) {
++swap_idx;
}
if (idx) {
swap(nums[swap_idx], nums[idx - 1]);
}
sort(nums.begin() + idx, nums.end());
return nums;
}
};
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。