以下将返回给定数字的所有因子组合:
例如:12将返回: [[2,6],[2,2,3],[3,4]] <-不返回重复的因子组合。
import math
class Solution:
def getFactors(self, n):
"""
:type n: int
:rtype: List[List[int]]
"""
res = []
self.recurse(2, n, [], res)
return res
def recurse(self, start, n, output, res):
for i in range(start, int(math.sqrt(n)) + 1):
q, r = divmod(n, i) # 8/2 ===> q=4,r=0
if r == 0: # If divisble
output.append(i)
output.append(q)
res.append(output[:])
output.pop()
self.recurse(i, q, output, res)
output.pop()
在数学上不严格(请不解决递归关系),分析该算法运行时间复杂度的合理方法是什么?