File tree 1 file changed +17
-17
lines changed 1 file changed +17
-17
lines changed Original file line number Diff line number Diff line change 1
- // Time Complexity: O( 2^n)
2
- // Space Complexity : O(1)
1
+ // Time: O(n * 2^n)
2
+ // Space: O(1)
3
3
4
4
class Solution {
5
- public:
6
- vector<vector<int > > subsetsWithDup (vector<int > &S) {
7
- sort (S.begin (), S.end ());
8
- vector<vector<int > > result (1 );
9
- size_t previous_size = 0 ;
10
- for (size_t i = 0 ; i < S.size (); ++i) {
11
- const size_t size = result.size ();
12
- for (size_t j = 0 ; j < size; ++j) {
13
- // only union non-duplicate element or new union set
14
- if (i == 0 || S[i] != S[i-1 ] || j >= previous_size) {
15
- result.push_back (result[j]);
16
- result.back ().push_back (S[i]);
17
- }
5
+ public:
6
+ vector<vector<int >> subsetsWithDup (vector<int > &nums) {
7
+ vector<vector<int >> result (1 );
8
+ sort (nums.begin (), nums.end ());
9
+ size_t previous_size = 0 ;
10
+ for (size_t i = 0 ; i < nums.size (); ++i) {
11
+ const size_t size = result.size ();
12
+ for (size_t j = 0 ; j < size; ++j) {
13
+ // Only union non-duplicate element or new union set.
14
+ if (i == 0 || nums[i] != nums[i - 1 ] || j >= previous_size) {
15
+ result.emplace_back (result[j]);
16
+ result.back ().emplace_back (nums[i]);
18
17
}
19
- previous_size = size;
20
18
}
21
- return result ;
19
+ previous_size = size ;
22
20
}
21
+ return result;
22
+ }
23
23
};
You can’t perform that action at this time.
0 commit comments