zoukankan      html  css  js  c++  java
  • [Swift]LeetCode254.因子组合 $ Factor Combinations

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(shanqingyongzhi)
    ➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/10225203.html 
    ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
    ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    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. Each combination's factors must be sorted ascending, for example: The factors of 2 and 6 is [2, 6], not [6, 2].
    2. You may assume that n is always positive.
    3. 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]
    ]

    数字可以被视为其因子的乘积。例如,

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

    编写一个接受整数n并返回所有可能的因子组合的函数。

    注:

    每个组合的因子必须按升序排序,例如:2和6的因子是[2,6],而不是[6,2]。

    你可以假设n总是正的。

    系数应大于1且小于n。

    实例:

    输入:1

    输出:

    []

    输入:37

    输出:

    []

    输入:12

    输出:

    [
      [2, 6],
      [2, 2, 3],
      [3, 4]
    ]

    输入:32

    输出:

    [
      [2, 16],
      [2, 2, 8],
      [2, 2, 2, 4],
      [2, 2, 2, 2, 2],
      [2, 4, 4],
      [4, 8]
    ]

     1 class Solution {
     2     func getFactors(_ n:Int) -> [[Int]]{
     3         var res:[[Int]] = [[Int]]()
     4         var arr:[Int] = [Int]()
     5         helper(n,2,&arr,&res)
     6         return res
     7     }
     8     
     9     func helper(_ n:Int,_ start:Int,_ out:inout [Int],_ res:inout [[Int]])
    10     {
    11         var num:Int = Int(floor(sqrt(Double(n))))
    12         var i :Int = start
    13         while(i <= num)
    14         {
    15             if n % i == 0
    16             {
    17                 var new_out:[Int] = out
    18                 new_out.append(i)
    19                 helper(n / i, i, &new_out, &res)
    20                 new_out.append(n / i)
    21                 res.append(new_out)
    22             }
    23             i += 1
    24         }  
    25     }
    26 }
  • 相关阅读:
    HUST 1372 marshmallow
    HUST 1371 Emergency relief
    CodeForces 629D Babaei and Birthday Cake
    CodeForces 629C Famil Door and Brackets
    ZOJ 3872 Beauty of Array
    ZOJ 3870 Team Formation
    HDU 5631 Rikka with Graph
    HDU 5630 Rikka with Chess
    CodeForces 626D Jerry's Protest
    【POJ 1964】 City Game
  • 原文地址:https://www.cnblogs.com/strengthen/p/10225203.html
Copyright © 2011-2022 走看看