LeetCode 492[构造矩形]

题目

链接

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;
            
    }
};
posted @ 2024-11-21 13:56  EricsT  阅读(0)  评论(0编辑  收藏  举报