LeetCode 1362.最接近的因数题解

LeetCode 1362.最接近的因数

题目描述

在这里插入图片描述

源码解析

class Solution {
    
    
public:
    vector<int> closestDivisors(int num) {
    
    
        vector<int> arr(2);
        int sub=-1;  //记录两数的绝对差
        for(int n=num+1;n<=num+2;n++)
        {
    
    
            for(int i=(int)sqrt(n);i>=1;--i)//从平方根开始,能最快找到最小绝对差
            {
    
    
                if(n%i!=0) continue;//不能整除,进行下一次循环
                if(sub==-1||abs(i-n/i)<sub)
                {
    
    
                    arr[0]=i;
                    arr[1]=n/i;
                    sub=abs(arr[0]-arr[1]);
                    continue;
                }
            }
        }
        return arr;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_52324409/article/details/121040233