CPP
class Solution {
public:
vector<vector<int> > res;
vector<int> temp;
vector<vector<int> > permuteUnique(vector<int> &num) {
sort(num.begin(), num.end());
dfs(num);
return res;
}
void dfs(vector<int> &num)
{
int m = num.size();
if (m == 0)
{
res.push_back(temp);
return;
}
for (int i = 0; i < m; i++)
{
while(i<m-1&&num[i]==num[i+1]) i++;
temp.push_back(num[i]);
vector<int> cur=num;
cur.erase(cur.begin()+i);
dfs(cur);
temp.pop_back();
}
}
};
Last updated
Was this helpful?