Advertisement
Guest User

Untitled

a guest
Apr 24th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.22 KB | None | 0 0
  1.     vector<vector<int>> permuteUnique(vector<int>& nums) {
  2.         vector<vector<int> > result;
  3.         sort(nums.begin(), nums.end());
  4.         helper(nums, 0, result);
  5.         return result;
  6.     }
  7.     void helper(vector<int> &nums, int begin, vector<vector<int> > &result) {
  8.         if (begin == nums.size()-1) {
  9.             result.push_back(nums);
  10.             return;
  11.         }
  12.  
  13.         for (int i = begin; i < nums.size(); i++) {
  14.             if (i != begin && nums[begin] == nums[i]) continue;
  15.             swap(nums[begin], nums[i]);
  16.             helper(nums, begin + 1, result);
  17.             //swap(nums[begin], nums[i]);
  18.         }
  19.     }
  20. ///////////////////////////
  21.     void recursion(vector<int> num, int i, int j, vector<vector<int> > &res) {
  22.         if (i == j-1) {
  23.             res.push_back(num);
  24.             return;
  25.         }
  26.         for (int k = i; k < j; k++) {
  27.             if (i != k && num[i] == num[k]) continue;
  28.             swap(num[i], num[k]);
  29.             recursion(num, i+1, j, res);
  30.         }
  31.     }
  32.     vector<vector<int> > permuteUnique__(vector<int> &num) {
  33.         sort(num.begin(), num.end());
  34.         vector<vector<int> >res;
  35.         recursion(num, 0, num.size(), res);
  36.         return res;
  37.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement