我正在尝试解决LeetCode上的这个问题:https://leetcode.com/problems/factor-combinations/description/
可以将数字视为其因子的乘积。例如:
8 = 2 x 2 x 2;= 2 x 4。
编写一个函数,接受一个整数n并返回其所有可能的因子组合。
虽然我能够使用dfs方法编写代码,但是我很难以输入的形式驱动它的最坏情况时间复杂度。有人能帮忙吗?
8 = 2 x 2 x 2;= 2 x 4。
编写一个函数,接受一个整数n并返回其所有可能的因子组合。
虽然我能够使用dfs方法编写代码,但是我很难以输入的形式驱动它的最坏情况时间复杂度。有人能帮忙吗?
public List<List<Integer>> getFactors(int n) {
List<List<Integer>> result = new ArrayList<List<Integer>>();
List<Integer> current = new ArrayList<Integer>();
getFactorsHelper(n,2,current,result);
return result;
}
public void getFactorsHelper(int n,int start,List<Integer> current, List<List<Integer>> result){
if(n<=1 && current.size()>1){
result.add(new ArrayList<>(current));
return;
}
for(int i=start;i<=n;i++){
if(n%i==0) {
current.add(i);
getFactorsHelper(n/i,i,current,result);
current.remove(current.size()-1);
}
}
}