LeetCode 492[構造矩形]

EricsT發表於2024-11-21

題目

連結

LeetCode 492[構造矩形]

詳情

LeetCode 492[構造矩形]

例項

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

相關文章