【leetcode】1362. Closest Divisors
题目如下:
Given an integer
num
, find the closest two integers in absolute difference whose product equalsnum + 1
ornum + 2
.Return the two integers in any order.
Example 1:
Input: num = 8 Output: [3,3] Explanation: For num + 1 = 9, the closest divisors are 3 & 3, for num + 2 = 10, the closest divisors are 2 & 5, hence 3 & 3 is chosen.Example 2:
Input: num = 123 Output: [5,25]Example 3:
Input: num = 999 Output: [40,25]Constraints:
1 <= num <= 10^9
解题思路:直接穷举计算即可。
代码如下:
class Solution(object): def closestDivisors(self, num): """ :type num: int :rtype: List[int] """ num_sqrt = int((num+2) ** 0.5) + 1 diff = float('inf') res = [] for i in range(1,num_sqrt+1): if (num+2) % i == 0 and diff > abs(i - (num+2) / i): diff = abs(i - (num+2) / i) res = [i,(num+2) / i] num_sqrt = int((num+2) ** 0.5) + 1 for i in range(1,num_sqrt+1): if (num+1) % i == 0 and diff > abs(i - (num+1) / i): diff = abs(i - (num+1) / i) res = [i,(num+1) / i] return res