Skip to content

Commit 196d566

Browse files
committed
Update subsets.cpp
1 parent aee6f28 commit 196d566

File tree

1 file changed

+30
-19
lines changed

1 file changed

+30
-19
lines changed

C++/subsets.cpp

+30-19
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,36 @@
1-
// Time Complexity: O(2^n)
2-
// Space Complexity: O(1)
1+
// Time: O(n * 2^n)
2+
// Space: O(1)
33

44
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]);
2114
}
15+
}
16+
return result;
17+
}
18+
};
2219

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+
}
2433
}
34+
return result;
35+
}
2536
};

0 commit comments

Comments
 (0)