Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- vector<vector<int>> permuteUnique(vector<int>& nums) {
- vector<vector<int> > result;
- sort(nums.begin(), nums.end());
- helper(nums, 0, result);
- return result;
- }
- void helper(vector<int> &nums, int begin, vector<vector<int> > &result) {
- if (begin == nums.size()-1) {
- result.push_back(nums);
- return;
- }
- for (int i = begin; i < nums.size(); i++) {
- if (i != begin && nums[begin] == nums[i]) continue;
- swap(nums[begin], nums[i]);
- helper(nums, begin + 1, result);
- //swap(nums[begin], nums[i]);
- }
- }
- ///////////////////////////
- void recursion(vector<int> num, int i, int j, vector<vector<int> > &res) {
- if (i == j-1) {
- res.push_back(num);
- return;
- }
- for (int k = i; k < j; k++) {
- if (i != k && num[i] == num[k]) continue;
- swap(num[i], num[k]);
- recursion(num, i+1, j, res);
- }
- }
- vector<vector<int> > permuteUnique__(vector<int> &num) {
- sort(num.begin(), num.end());
- vector<vector<int> >res;
- recursion(num, 0, num.size(), res);
- return res;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement