leetcode Subsets II

2014-11-24 00:12:06 · 作者: · 浏览: 4
Take advantage of the order to eliminate the duplicate sets. The following is the code:
class Solution {  
 public:  
  vector> res;  
  void subsets(vector& S, int start, vector& numset) {  
    if (start >= S.size())   
      return;    
    numset.push_back(S[start]);  
    res.push_back(numset);  
    subsets(S, start + 1, numset);  
    numset.pop_back();  
      
    while (start + 1 < S.size() && S[start] == S[start + 1])  
      ++start;  
    if (start + 1 < S.size())  
      subsets(S, start + 1, numset);  
  }  
  vector
> subsetsWithDup(vector &S) { // Note: The Solution object is instantiated only once and is reused by each test case. res.clear(); vector numset; res.push_back(numset); sort(S.begin(), S.end()); subsets(S, 0, numset); return res; } };