leetcode每日一题-492:构造矩形

leetcode每日一题-492:构造矩形

题目

在这里插入图片描述



分析

l和w均为整数,并且要求l>=w,而且要求l和w差距尽可能地小,其实就是枚举area都乘积为area的因数对,然后找到插值最小的一对即可.



代码

class Solution {
    
    
public:
    vector<int> constructRectangle(int area) {
    
    
        vector<int> res;
        // 差值
        int ex = area - 1, w, l;
        
        for(int i=1 ; i<=(int)sqrt(area) ; i++)
        {
    
    
            // 枚举乘积为area的因数对,枚举到sqrt(area)即可
            if(area % i == 0)
            {
    
    
                // w<=l
                w = min(i, area / i);
                l = max(i, area / i);
                if(l - w < ex)
                {
    
    
                    ex = l - w;
                }
            }
        }

        // 要求先输出l后输出r
        res.push_back(l);
        res.push_back(w);

        return res;
    }
};

Guess you like

Origin blog.csdn.net/qq_45826803/article/details/120926723