LeetCode 492[构造矩形]
题目
链接
详情
实例
提示
题解
思路
用 sqrt
函数求 area 的算术平方根 fl
强制转换 将算术平方根 fl 取整为 iLenth
求 iLenth 和 fl 的差:
若为0,则长宽均为 iLenth,加入容器,直接输出
若不为0,则用 for
循环将 iLenth 逐渐遍历至 area
iLenth 强制转换为浮点型 flLenth,为了求取准确的宽度
求取 flWide = area / flLenth
然后将 flWide 强制转换为整型 iWide
求 iWide 和 flWide 的差:
若不为0,则继续遍历
若为0,则:判断 iLenth 和 iWide 的大小,将大值先加入容器,小值后加入容器后输出容器
代码
class Solution {
public:
vector<int> constructRectangle(int area) {
vector<int> vecRet;
float fl = sqrt(area);//取面积的算术平方根
int iLenth = fl;//取整
if (0 == iLenth - fl)//若算术平方根为整数,则长宽相等,直接输出
{
vecRet.push_back(iLenth);
vecRet.push_back(iLenth);
return vecRet;
}
for (; iLenth <= area; iLenth++)//遍历长
{
float flWide = area / (float)iLenth;//取宽
int iWide = flWide;
if (0 != iWide - flWide)//宽不为整数,继续遍历
continue;
//长宽为整数,直接输出
if (iLenth > iWide)//保证长大于宽
{
vecRet.push_back(iLenth);
vecRet.push_back(iWide);
}
else
{
vecRet.push_back(iWide);
vecRet.push_back(iLenth);
}
break;
}
return vecRet;
}
};
本文来自博客园,作者:EricsT,转载请注明原文链接:https://www.cnblogs.com/EricsT/p/18560560