4/08/2014

Leetcode -- Permutations II

 class Solution {  
 public:  
   vector<vector<int> > permuteUnique(vector<int> &num) {  
     set<vector<int> > result(getPermute(num));  
     vector<vector<int> > ret(result.begin(), result.end());  
     return ret;  
   }  
   set<vector<int> > getPermute(vector<int>& num) {  
     set<vector<int> > result;  
     if(num.size() == 1) {  
       result.insert(num);  
     } else if(num.size() > 1) {  
       vector<int> temp(num.begin(), num.end() - 1);  
       int extra = num[num.size() - 1];  
       auto ret = getPermute(temp);  
       for(auto item : ret) {  
         for(int i = 0; i < item.size() + 1; ++i) {  
           vector<int> cp(item);  
           cp.insert(cp.begin() + i,extra);  
           result.insert(cp);  
         }  
       }  
     }  
     return result;  
   }  
 };  

No comments: