LintCode 1308. 因子组合 Python算法

描述

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

8 = 2 x 2 x 2;
= 2 x 4。

编写一个函数,可以输入整数n并返回其因子的所有可能组合。

说明

您可以假设n总是正数。
因数应大于1且小于n。

样例

- 样例1

输入: 12
输出: 
[
  [2, 6],
  [2, 2, 3],
  [3, 4]
]
解释:
2*6 = 12
2*2*3 = 12
3*4 = 12

- 样例2

输入: 32
输出: 
[
  [2, 16],
  [2, 2, 8],
  [2, 2, 2, 4],
  [2, 2, 2, 2, 2],
  [2, 4, 4],
  [4, 8]
]
解释:
2*16=32
2*2*8=32
2*2*2*4=32
2*2*2*2*2=32
2*4*4=32
4*8=32

解析

class Solution:
  
  def dfs(self, n, subset, start, result):

    while start * start <= n:
        
      if n % start == 0:
        result.append(subset + [start, n//start])
        self.dfs(n//start, subset + [start], start, result)
        
      start += 1
    
    return result


  def getFactors(self, n):

    result = []
    self.dfs(n, [], 2, result)

    return result

运行结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/SmallTeddy/article/details/108635483