31. Next Permutation
void nextPermutation(vector<int>& nums) { // time: O(n); space: O(1)
int n = nums.size();
for (int i = n - 2; i >= 0; --i) {
if (nums[i] < nums[i + 1]) {
int j;
for (j = n - 1; j > i; --j) {
if (nums[j] > nums[i]) break;
}
swap(nums[i], nums[j]);
reverse(nums.begin() + i + 1, nums.end());
return;
}
}
reverse(nums.begin(), nums.end());
}Last updated