这个题目比较要注意的一点是如何防止重复。在dfs中,下一层的因子应该大于等于上一层的
public class Solution { List<List<Integer>> result = new ArrayList<List<Integer>>(); public List<List<Integer>> getFactors(int n) { if (n == 1) { return result; } helper(n, new ArrayList<Integer>(), 2); return result; } public void helper(int n, List<Integer> list, int pre) { if (n == 1) { if (list.size() > 1) result.add(list); return; } for (int i = pre; i <= n; i++) { if (n % i == 0) { List<Integer> l = new ArrayList<Integer>(list); l.add(i); helper(n / i, l, i); } } } }
时间: 2024-09-26 20:09:09