leetcode permutation II

class Solution {
public:
vector<int>v1;
vector<vector<int>>v;
    vector<vector<int> > permuteUnique(vector<int> &num) 
    {
        v.clear();
        sort(num.begin(),num.end());
        backtrace(0,num);
        return v;        
    }
    void backtrace(int depth,vector<int> &num)
    {
        if(depth==num.size())
        {
            v1.clear(); 
            for(int i=0;i<num.size();i++)
            {
                v1.push_back(num[i]);
            }  
            v.push_back(v1);
        }
        if(depth<num.size())
        {                        
           for(int i=depth+1;i<num.size();i++)
           { 
               bool equal=false;
               for(int j=depth;j<i;j++)
               {
                  if(num[i]==num[j])
                  equal=true;
               }
               if(!equal)
               {
               swap(num[depth],num[i]);
               backtrace(depth+1,num);
               swap(num[depth],num[i]);
               }
           }  
           backtrace(depth+1,num); 
        }
    }
};
原文地址:https://www.cnblogs.com/tgkx1054/p/3087873.html