Skip to content

Instantly share code, notes, and snippets.

@HaiyangXu
Created May 9, 2014 02:15
Show Gist options
  • Save HaiyangXu/f1700d8b28482d4a2725 to your computer and use it in GitHub Desktop.
Save HaiyangXu/f1700d8b28482d4a2725 to your computer and use it in GitHub Desktop.
class Solution {
public:
vector<vector<int> > result;
vector<vector<int> > permuteUnique(vector<int> &num) {
permute(num,0);
return result;
}
void permute(vector<int> &num,int index)
{
unordered_set<int> umap;
if(index==num.size())
result.push_back(num);
else
for(int i=index;i<num.size();++i)
{
std::pair<unordered_set<int>::iterator,bool> it=umap.insert(num[i]);
if(it.second)
{
swap(num[i],num[index]);
permute(num,index+1);
swap(num[i],num[index]);
}
}
}
};
@HaiyangXu
Copy link
Author

使用了一个hash set去重,如果当前待交换的项和之前相同,则不进行递归。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment