1class Solution {2public:3void fun(vector<int> &nums, vector<vector<int>> &ans, int i) {4if (i == nums.size()) {5ans.push_back(nums);6return;7}8int freq[21] = {0};9for (int j = i; j < nums.size(); j++) {10if (freq[nums[j] + 10] == 0) {11swap(nums[i], nums[j]);12fun(nums, ans, i + 1);13swap(nums[i], nums[j]);14}15freq[nums[j] + 10]++;16}17}18vector<vector<int>> permuteUnique(vector<int> &nums) {19vector<vector<int>> ans;20fun(nums, ans, 0);21return ans;22}23};