class Solution {
public:
void nextPermutation(vector<int> &num) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int n = num.size();
if (n < 2) return;
int i = n - 2;
for (; i >= 0 && num[i] >= num[i + 1]; i--);
int j = n - 1;
for (; j >= 0 && num[i] >= num[j]; j--);
int tmp = num[i];
num[i] = num[j];
num[j] = tmp;
i++;
j = n - 1;
while (i < j) {
int tmp = num[i];
num[i] = num[j];
num[j] = tmp;
i++;
j--;
}
}
};
Small Case: 8ms
Large Case: 60ms
Time: O(n)
Space: O(1)