Guest User

Untitled

a guest
Jan 19th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.80 KB | None | 0 0
  1. //////////////////////////////////////////
  2. // My Solution
  3. /////////////////////////////////////////
  4. vector<vector<int>> permute(vector<int>& nums) {
  5.  
  6. if (nums.size() == 0) return vector<vector<int>>();
  7.  
  8. sort(begin(nums), end(nums));
  9. vector<vector<int>> ret;
  10. ret.push_back(nums);
  11.  
  12. // next permutation
  13. while (true)
  14. {
  15. int i = nums.size() - 2;
  16. while (i>=0 && nums[i] >= nums[i+1]) i--;
  17.  
  18. if (i < 0)
  19. {
  20. // no more permutations.
  21. break;
  22. }
  23.  
  24. int j = nums.size() - 1;
  25. while (i<j && nums[i] >= nums[j]) j--;
  26.  
  27. swap(nums[i], nums[j]);
  28.  
  29. int s = i + 1;
  30. int e = nums.size() -1;
  31. while (s < e)
  32. swap(nums[s++], nums[e--]);
  33.  
  34. ret.push_back(nums);
  35. }
  36.  
  37. return ret;
  38. }
Add Comment
Please, Sign In to add comment