• [leetcode]254. Factor Combinations因式组合


    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.

    Example 1:

    Input: 1
    Output: []

    Example 2:

    Input: 37
    Output:[]

    Example 3:

    Input: 12
    Output:
    [
      [2, 6],
      [2, 2, 3],
      [3, 4]
    ]

    Example 4:

    Input: 32
    Output:
    [
      [2, 16],
      [2, 2, 8],
      [2, 2, 2, 4],
      [2, 2, 2, 2, 2],
      [2, 4, 4],
      [4, 8]
    ]

    题意:

    给定正整数n,返回所有乘积等于n的不同组合(除了n = n)。为避免重复,所有乘数单调递增。

    思路:

    backtracking

    代码:

     1 class Solution {
     2     public List<List<Integer>> getFactors(int n) {
     3         List<List<Integer>> res = new ArrayList<>();
     4         helper(res, new ArrayList<>(), n, 2);
     5         return res;
     6     }
     7     
     8     public void helper(List<List<Integer>> res, List<Integer> list, int n, int start){
     9         if(n == 1){
    10             if(list.size() > 1){
    11                 res.add(new ArrayList<>(list));
    12                 return;
    13             }
    14         }
    15         for(int i = start; i< = n; i++){
    16             if(n % i== 0){
    17                 list.add(i);
    18                 helper(res, list, n/i, i);
    19                 list.remove(list.size()-1);
    20             }
    21         }
    22     }
    23 }
  • 相关阅读:
    《挑战程序设计竞赛》 读后感
    基于SOAP的xml网络交互心得
    不用客户端,轻松下视频
    在cmd窗口中查询android的sqlite3数据库表之步骤
    单链表的插入删除以及逆转
    java中排序一个字符串数组
    求质因数
    指针与引用的区别
    统计查询-sql
    ---随心买统计查询
  • 原文地址:https://www.cnblogs.com/liuliu5151/p/9158323.html
Copyright © 2020-2023  润新知