leetcode - Subsets II
2013-11-06 11:22 张汉生 阅读(193) 评论(0) 编辑 收藏 举报
1 class Solution { 2 public: 3 vector<vector<int> > subsetsWithDup(vector<int> &S) { 4 // IMPORTANT: Please reset any member data you declared, as 5 // the same Solution instance will be reused for each test case. 6 sort(S.begin(), S.end()); 7 int n = S.size(); 8 vector<vector<int>> rlt; 9 if (n<=0) 10 return rlt; 11 rlt.push_back(vector<int>()); 12 int i, j; 13 for (i=0; i<n; i){ 14 int m = rlt.size(); 15 int dn=0; 16 while(dn+i<n && S[i+dn]==S[i]) 17 dn++; 18 for (j=0; j<m; j++){ 19 for (int k=1; k<=dn; k++){ 20 vector<int> tmp = rlt[j]; 21 for (int l=1; l<=k; l++){ 22 tmp.push_back(S[i]); 23 } 24 rlt.push_back(tmp); 25 } 26 } 27 i += dn; 28 } 29 return rlt; 30 } 31 };