题目:​​原题链接​(中等)

标签:数学

解法

时间复杂度

空间复杂度

执行用时

Ans 1 (Python)

O ( l o g N )

O ( l o g N )

448ms (12.00%)

Ans 2 (Python)

Ans 3 (Python)

解法一:

def factors(n):
k = 1
while k * k < n:
if n % k == 0:
yield [k, n // k]
k += 1
if k * k == n:
yield [k, k]


class Solution:
def closestDivisors(self, num: int) -> List[int]:
res1 = min(factors(num + 1), key=lambda x: abs(x[1] - x[0]))
res2 = min(factors(num + 2), key=lambda x: abs(x[1] - x[0]))
return min(res1, res2, key=lambda x: abs(x[1] - x[0]))