class Solution { public: void nextPermutation(vector<int> &num) { int n = num.size(); int i = n - 1; bool found = false; for(; i > 0; --i) { if( num[i - 1] < num[i]) { found = true; break; } } if(found) { int j = i; for(int k = j + 1; k < n; ++k) { if(num[k] < num[j] && num[k] > num[i - 1] ) { j = k; } } int temp = num[i - 1]; num[i - 1] = num[j]; num[j] = temp; sort(num.begin() + i, num.end()); } else { sort(num.begin(), num.end()); } } };
No comments:
Post a Comment