Permutations II

来源:互联网 发布:网络言情小说家排名 编辑:程序博客网 时间:2024/05/20 10:22

 Permutations II

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) {        sort(nums.begin(),nums.end());        vector<int>path;        vector<vector<int>>ans;        int begin=0;        dfs(nums,path,ans,begin);              return ans;            }            void dfs(vector<int> nums, vector<int>&path,vector<vector<int>>&ans,int begin)    {        sort(nums.begin()+begin,nums.end());        int len=nums.size();        if (begin==len)        {            ans.push_back(path);            return ;        }        int pre=INT_MIN;        for (int i=begin; i<len; i++)        {            if (pre==nums[i]) continue;            pre=nums[i];                        if (i!=begin&&nums[i]==nums[begin]) continue;            int temp=nums[begin];            nums[begin]=nums[i];            nums[i]=temp;            path.push_back(nums[begin]);            dfs(nums,path,ans,begin+1);            temp=nums[begin];            nums[begin]=nums[i];            nums[i]=temp;                        path.pop_back();        }        return ;            }    };



0 0
原创粉丝点击