Skip to content

Commit 43d2773

Browse files
committed
Create factor-combinations.cpp
1 parent 069db51 commit 43d2773

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

C++/factor-combinations.cpp

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// Time: O(nlogn) = logn * n^(1/2) * n^(1/4) * ... * 1
2+
// Space: O(logn)
3+
4+
// DFS solution.
5+
class Solution {
6+
public:
7+
vector<vector<int>> getFactors(int n) {
8+
vector<vector<int>> result;
9+
vector<int> factors;
10+
getResult(n, &result, &factors);
11+
return result;
12+
}
13+
14+
void getResult(const int n, vector<vector<int>> *result, vector<int> *factors) {
15+
for (int i = factors->empty() ? 2 : factors->back(); i <= n / i; ++i) {
16+
if (n % i == 0) {
17+
factors->emplace_back(i);
18+
factors->emplace_back(n / i);
19+
result->emplace_back(*factors);
20+
factors->pop_back();
21+
getResult(n / i, result, factors);
22+
factors->pop_back();
23+
}
24+
}
25+
}
26+
};

0 commit comments

Comments
 (0)