首页 > 其他 > 详细

254. Factor Combinations

时间:2016-08-11 06:21:23      阅读:177      评论:0      收藏:0      [点我收藏+]

就是backtracking

 1     public List<List<Integer>> getFactors(int n) {
 2         List<List<Integer>> res = new ArrayList<List<Integer>>();
 3         helper(res, new ArrayList<Integer>(), n, 2);
 4         return res;
 5     }
 6     
 7     private void helper(List<List<Integer>> res, List<Integer> item, int n, int start) {
 8         for(int i = start; i * i <= n; i++) {
 9             if(n % i == 0) {
10                 item.add(i);
11                 List<Integer> curComb = new ArrayList<Integer>(item);
12                 curComb.add(n / i);
13                 res.add(curComb);
14                 helper(res, item, n / i, i);
15                 item.remove(item.size() - 1);
16             }
17         }
18     }

要注意的是

helper函数需要有一个int start记录开始的点,不然比如说分解12的时候会有重复,[2,2,3],[3,2,2]会变成两组加进去,所以每次分解的时候不能比上一次的factor大

254. Factor Combinations

原文:http://www.cnblogs.com/warmland/p/5759502.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!