zoukankan      html  css  js  c++  java
  • 254. Factor Combinations

    https://leetcode.com/problems/factor-combinations/description/

    Numbers can be regarded as product of its factors. For example,

    8 = 2 x 2 x 2;
      = 2 x 4.
    

    Write a function that takes an integer n and return all possible combinations of its factors.

    Note: 

    1. You may assume that n is always positive.
    2. Factors should be greater than 1 and less than n.

    Examples: 
    input: 1
    output: 

    []
    
    input: 37
    output: 
    []
    
    input: 12
    output:
    [
      [2, 6],
      [2, 2, 3],
      [3, 4]
    ]
    
    input: 32
    output:
    [
      [2, 16],
      [2, 2, 8],
      [2, 2, 2, 4],
      [2, 2, 2, 2, 2],
      [2, 4, 4],
      [4, 8]
    ]
    

    Sol:

    public class Solution {
        public List<List<Integer>> getFactors(int n) {
            // recursive DFS
            
            List<List<Integer>> result = new ArrayList<List<Integer>>();
            helper(result, new ArrayList<Integer>(), n, 2);
            return result;
            
        }
        
        public void helper(List<List<Integer>> result, List<Integer> item, int n, int start){
            // base case
            if (n <= 1){
                if (item.size() > 1){
                    result.add(new ArrayList<Integer>(item));
                }
                return ;
            }
            
            for (int i = start; i <= n; ++i){
                if (n % i == 0){
                    item.add(i);
                    helper(result, item, n/i, i);
                    item.remove(item.size() - 1);
                }
            }
            
            
        }
            
            
            
    }
  • 相关阅读:
    列表
    break和continue
    第三天下午
    第二天
    简历,面试
    周三&nbsp;景安
    应届生求职优势(我的求职心…

    2013年01月02日
    Click&nbsp;and&nbsp;Drag
  • 原文地址:https://www.cnblogs.com/prmlab/p/7295264.html
Copyright © 2011-2022 走看看