#define _ALLOW_COMPILER_AND_STL_VERSION_MISMATCH #include #include #include using namespace std; class Solution { public: unordered_set> result; vector path; vector visited; void dfs(const vector& nums, vector& path, vector& visited){ if(path.size() == nums.size()) { result.insert(path); return; } //use index for(int i = 0; i < nums.size(); i++){ if(!visited[i]){ path.push_back(nums[i]); visited[i] = true; dfs(nums, path, visited); path.pop_back(); visited[i] = false; } } } vector> permuteUnique(vector& nums) { visited.resize(nums.size(), false); dfs(nums, path, visited); vector> res(result.begin(), result.end()); return res; } }; int main(){ }