Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //////////////////////////////////////////
- // My Solution
- /////////////////////////////////////////
- vector<vector<int>> permute(vector<int>& nums) {
- if (nums.size() == 0) return vector<vector<int>>();
- sort(begin(nums), end(nums));
- vector<vector<int>> ret;
- ret.push_back(nums);
- // next permutation
- while (true)
- {
- int i = nums.size() - 2;
- while (i>=0 && nums[i] >= nums[i+1]) i--;
- if (i < 0)
- {
- // no more permutations.
- break;
- }
- int j = nums.size() - 1;
- while (i<j && nums[i] >= nums[j]) j--;
- swap(nums[i], nums[j]);
- int s = i + 1;
- int e = nums.size() -1;
- while (s < e)
- swap(nums[s++], nums[e--]);
- ret.push_back(nums);
- }
- return ret;
- }
Add Comment
Please, Sign In to add comment