Permutations II

来源:互联网 发布:gta5娇羞萌妹捏脸数据 编辑:程序博客网 时间:2024/05/20 06:26

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],  [2,1,1]]

class Solution {public:    vector<vector<int>> permuteUnique(vector<int>& nums) {        set<vector<int> > res;        vector<int> out;        vector<int> visited(nums.size(),0);                sort(nums.begin(),nums.end());        permuteUniqueDFS(nums,0,out,res,visited);        return vector<vector<int> >(res.begin(),res.end());    }    void permuteUniqueDFS(vector<int>& nums,int level,vector<int> &out,set<vector<int> > &res,vector<int> &visited)    {        if(level>=nums.size()) res.insert(out);        else        {            for(int i=0;i<nums.size();i++)            {                // if(i>0 && nums[i]==nums[i-1]) continue;                if(visited[i] == 0)                {                    visited[i] = 1;                    out.push_back(nums[i]);                    permuteUniqueDFS(nums,level+1,out,res,visited);                    out.pop_back();                    visited[i] = 0;                }            }        }    }};


原创粉丝点击