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;
}
};