aboutsummaryrefslogtreecommitdiff
path: root/permutations2.cpp
blob: 16d016265822aeadfebf6e0d7b2191f0626cec7e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include "leetcode.h"

class Solution {
public:
  vector<vector<int>> permuteUnique(vector<int> &nums) {
    vector<vector<int>> ans;
    helper(0, nums, ans);
    return ans;
  }

private:
  void helper(int i, vector<int> &nums, vector<vector<int>> &ans) {
    if (i == nums.size()) {
      ans.emplace_back(nums);
      return;
    }
    unordered_set<int> us;
    for (int j = i; j < nums.size(); j++) {
      if (us.count(nums[j]) == 1)
        continue;
      us.insert(nums[j]);
      swap(nums[i], nums[j]);
      helper(i + 1, nums, ans);
      swap(nums[i], nums[j]);
    }
  }
};

int main() {}