文章目录
- 1. 题目
- 2. 解题
1. 题目
整数可以被看作是其因子的乘积。
例如:8 = 2 x 2 x 2;= 2 x 4.
请实现一个函数,该函数接收一个整数 n 并返回该整数所有的因子组合。
注意:
你可以假定 n 为永远为正数。
因子必须大于 1 并且小于 n。示例 1:
输入: 1
输出: []示例 2:
输入: 37
输出: []示例 3:
输入: 12
输出:
[[2, 6],[2, 2, 3],[3, 4]
]示例 4:
输入: 32
输出:
[[2, 16],[2, 2, 8],[2, 2, 2, 4],[2, 2, 2, 2, 2],[2, 4, 4],[4, 8]
]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/factor-combinations
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
参考题解区大力王
class Solution {vector<vector<int>> ans;
public:vector<vector<int>> getFactors(int n) { return dfs(n, 2);}vector<vector<int>> dfs(int n, int div)//从div开始找因子{vector<vector<int>> factor, temp;for(int i = div; i*i <= n; ++i){if(n%i == 0){factor.push_back({n/i,i});//因子temp = dfs(n/i, i);//一个较大的因子,从较小的因子开始继续分割for(auto f : temp)// n/i 分割后的因子组合f{f.push_back(i);//加上因子 ifactor.push_back(f);//完整的组合放入答案} } }return factor;//返回答案}
};
0 ms 7.1 MB
我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!