【leetcode】1362. Closest Divisors

题目如下:

Given an integer num, find the closest two integers in absolute difference whose product equals num + 1 or num + 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

 

posted @ 2020-03-01 15:04  seyjs  阅读(353)  评论(0编辑  收藏  举报