Leetcode---Permutations II

来源:互联网 发布:pdf压缩 for mac 编辑:程序博客网 时间:2024/05/17 08:50

Given a collection of numbers that might contain duplicates, return all possible unique permutations.

For example,
[1,1,2] have the following unique permutations:
[1,1,2][1,2,1], and [2,1,1].

Show Tags

Have you met this question in a real interview?


DFS,并且去掉这样的情况:

某个数和上一个数相等,但是上一个数却没有被遍历到---->也就是说,结果中改变了源中数的顺序。

vector<int> temp;unordered_set<int> m;vector<vector<int> > result;void dfs(int level,vector<int> &num){    if(level==num.size()){        result.push_back(temp);        return;    }    for(int i=0;i<num.size();i++){        if(m.find(i)!=m.end())            continue;        if(i>0 && num[i]==num[i-1] && m.find(i-1)==m.end())            continue;        temp.push_back(num[i]);        m.insert(i);        dfs(level+1,num);        temp.pop_back();        m.erase(i);    }}vector<vector<int> > permuteUnique(vector<int> &num) {    sort(num.begin(),num.end());    dfs(0,num);    return result;}


0 0
原创粉丝点击