Advertisement
AmbushedRaccoon

LeetCode 46. Permutations

Jun 7th, 2025
250
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.02 KB | None | 0 0
  1. class Solution46 {
  2. public:
  3.     std::vector<std::vector<int>> permute(std::vector<int> nums)
  4.     {
  5.         std::vector<std::vector<int>> result;
  6.        
  7.         std::sort(nums.begin(), nums.end());
  8.         int swapIndex;
  9.         do
  10.         {
  11.             swapIndex = -1;
  12.             result.push_back(nums);
  13.             for (int i = nums.size() - 2; i >= 0; --i)
  14.             {
  15.                 if (nums[i] < nums[i + 1])
  16.                 {
  17.                     swapIndex = i;
  18.                     break;
  19.                 }
  20.             }
  21.             if (swapIndex != -1)
  22.             {
  23.                 for (int i = nums.size() - 1; i >= 0; --i)
  24.                 {
  25.                     if (nums[i] > nums[swapIndex])
  26.                     {
  27.                         std::swap(nums[i], nums[swapIndex]);
  28.                         break;
  29.                     }
  30.                 }
  31.                 std::reverse(nums.begin() + swapIndex + 1, nums.end());
  32.             }
  33.         } while (swapIndex != -1);
  34.         return result;
  35.     }
  36. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement