40 lines
1012 B
C++
40 lines
1012 B
C++
#define _ALLOW_COMPILER_AND_STL_VERSION_MISMATCH
|
|
|
|
#include <iostream>
|
|
#include <vector>
|
|
#include <unordered_set>
|
|
using namespace std;
|
|
|
|
class Solution {
|
|
public:
|
|
unordered_set<vector<int>> result;
|
|
vector<int> path;
|
|
vector<bool> visited;
|
|
void dfs(const vector<int>& nums, vector<int>& path, vector<bool>& 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<vector<int>> permuteUnique(vector<int>& nums) {
|
|
visited.resize(nums.size(), false);
|
|
dfs(nums, path, visited);
|
|
vector<vector<int>> res(result.begin(), result.end());
|
|
return res;
|
|
}
|
|
};
|
|
|
|
int main(){
|
|
|
|
}
|