File tree 1 file changed +30
-19
lines changed
1 file changed +30
-19
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 > > subsets (vector<int > &S) {
7
- const int size = S.size ();
8
- const int setSize = 1 << size;
9
- vector<vector<int > > ans;
10
- vector<int > v;
11
-
12
- sort (S.begin (), S.end ());
13
-
14
- for (int i = 0 ; i < setSize; ++i) {
15
- for (int j = 0 ; j < size; j++) {
16
- if (i & (1 << j))
17
- v.push_back (S[j]);
18
- }
19
- ans.push_back (v);
20
- v.clear ();
5
+ public:
6
+ vector<vector<int > > subsets (vector<int > &nums) {
7
+ vector<vector<int >> result (1 );
8
+ sort (nums.begin (), nums.end ());
9
+ for (size_t i = 0 ; i < nums.size (); ++i) {
10
+ const size_t size = result.size ();
11
+ for (size_t j = 0 ; j < size; ++j) {
12
+ result.emplace_back (result[j]);
13
+ result.back ().emplace_back (nums[i]);
21
14
}
15
+ }
16
+ return result;
17
+ }
18
+ };
22
19
23
- return ans;
20
+ // Time: O(n * 2^n)
21
+ // Space: O(1)
22
+ class Solution2 {
23
+ public:
24
+ vector<vector<int > > subsets (vector<int > &nums) {
25
+ vector<vector<int >> result (1 );
26
+ sort (nums.begin (), nums.end ());
27
+ for (size_t i = 0 ; i < nums.size (); ++i) {
28
+ const size_t size = result.size ();
29
+ for (size_t j = 0 ; j < size; ++j) {
30
+ result.emplace_back (result[j]);
31
+ result.back ().emplace_back (nums[i]);
32
+ }
24
33
}
34
+ return result;
35
+ }
25
36
};
You can’t perform that action at this time.
0 commit comments