LeetCode1362.ClosestDivisors的最接近因子【Medium】【Python】【数学】题目LeetCode给定一个整数num,找出绝对差值最接近的两个整数,其乘积等于num+1或num+2。以任意顺序返回两个整数。示例1:输入:num=8输出:[3,3]解释:对于num+1=9,最接近的约数是3和3,对于num+2=10,最接近的除数是2和5,因此选择3和3。例2:输入:num=123输出:[5,25]例3:输入:num=999输出:[40,25]约束条件:1<=num<=10^9问题是给你一个整数num,请求同时满足以下所有条件的两个整数:两个数的乘积等于num+1或num+2,用绝对差来衡量,两个数最接近自己的大小可以任意顺序返回这两个整数.示例1:输入:num=8输出:[3,3]解释:对于num+1=9,最接近的两个因子是3&3;对于num+2=10,最接近的两个因子是2和5,因此返回3和3。示例2:输入:num=123输出:[5,25]示例3:输入:num=999输出:[40,25]提示:1<=num<=10^9想法数学从1遍历到sqrt(x)以找到最接近的两个因子。事实上,从sqrt(x)向后遍历更快。时间复杂度:O(sqrt(n))空间复杂度:O(1)Python3代码classSolution:defclosestDivisors(self,num:int)->List[int]:importmathnum1,num2=num+1,num+2ans1=self.crack(num1)ans2=self.crack(num2)res=[]ifabs(ans1-int(num1/ans1))
