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 }
  • 相关阅读:
    JDBC中DAO+service设计思想
    Ajax的简单基础
    Ajax的简单基础
    Jquery选择器总结二
    Jquery选择器总结二
    Jquery选择器总结一
    Jquery选择器总结一
    amazon的新算法《大数据时代:亚马逊“预判发货”,顾客未动包裹先行》
    wget命令检测端口是否监听
    KUNG FU PANDA
  • 原文地址:https://www.cnblogs.com/strengthen/p/10225203.html
Copyright © 2011-2022 走看看