判断一下能不能直接平方根,不能的话每次减一检查能否被整除即可。
class Solution {
public:
vector<int> constructRectangle(int area) {
int w = sqrt(area);
vector<int> result;
if (w*w == area) {
result.push_back(w);
result.push_back(w);
return result;
}
else{
int h = area / w;
while (w*h != area)
{
w = w - 1;
h = area / w;
}
result.push_back(h);
result.push_back(w);
return result;
}
}
};
精简版代码:
class Solution {
public:
vector<int> constructRectangle(int area) {
int w = sqrt(area);
int h = area/w;
vector<int> result;
while (area%w != 0)
{
w = w - 1;
h = area / w;
}
result.push_back(h);
result.push_back(w);
return result;
}
};
最优解法里的最精简代码:
vector<int> constructRectangle(int area) {
for(int mid = sqrt(area); mid>0; mid--)
if (!(area%mid))
return {area/mid, mid};
}