leetcode_492 構造矩形
要求
作為一位web開發者, 懂得怎樣去規劃一個頁面的尺寸是很重要的。 現給定一個具體的矩形頁面面積,你的任務是設計一個長度為 L 和寬度為 W 且滿足以下要求的矩形的頁面。要求:
1. 你設計的矩形頁面必須等於給定的目標面積。
2. 寬度 W 不應大於長度 L,換言之,要求 L >= W 。
3. 長度 L 和寬度 W 之間的差距應當儘可能小。
你需要按順序輸出你設計的頁面的長度 L 和寬度 W。
示例:
輸入: 4
輸出: [2, 2]
解釋: 目標面積是 4, 所有可能的構造方案有 [1,4], [2,2], [4,1]。
但是根據要求2,[1,4] 不符合要求; 根據要求3,[2,2] 比 [4,1] 更能符合要求. 所以輸出長度 L 為 2, 寬度 W 為 2。
說明:
- 給定的面積不大於 10,000,000 且為正整數。
- 你設計的頁面的長度和寬度必須都是正整數。
核心程式碼
python
class Solution:
def constructRectangle(self, area: int) -> List[int]:
w = int(area ** 0.5)
while True:
if area % w == 0:
return [area // w, w]
else:
w -= 1
解題思路:本題是個幾何優化問題,有三個約束:1.面積指定; 2.長不小於寬;3.長寬均為整數。本題的優化目標是:尋找最小長寬比的矩形;分析思路:如果沒有長寬均為整數的限制,那麼最理想的情況即為面積為輸入面積area的正方形;我們用上述正方形的邊長的整數部分作為矩形寬度w的初始值,矩形長為整數的條件是w能被area整除,此時矩形寬為area // w,如果不能整除,則退而求其次,將w減1再次嘗試,直到w可以被area整除為止,每輪迭代都會增大長寬比,比較簡單。
「其他文章」
- XGBoost - XGBoost應用中的其他問題(六)
- XGBoost - XGBoost樣本不均衡(七)
- cifar-10資料集整理解讀
- SVM - 多分類問題(九)
- 聚類演算法K-Means - 引數列表(四)
- 聚類演算法K-Means - 向量化應用(三)
- 邏輯迴歸 - 評分卡專案(五)
- 邏輯迴歸 - 引數部分(四)
- 邏輯迴歸 - 引數部分(三)
- 邏輯迴歸 - 原理部分(一)
- 資料預處理與特徵工程總結 - 特徵選擇 - 嵌入法和包裝法(五)
- 資料預處理與特徵工程總結 - 缺失值(二)
- 決策樹總結 - 決策樹Gini係數計算過程詳細解答(七)
- 決策樹總結 - 歸納總結決策樹的ID3,C4.5和CART的構建過程(六)
- 決策樹總結 - DecisionTreeClassifier(二)
- 決策樹總結 - DecisionTreeClassifier(一)
- 模型評估指標AUC(area under the curve)
- YOLOv3的原始碼精度理解(十二) get_map函式
- YOLOv3的原始碼精度理解(十) 對輔助檔案進行解讀
- 影象增強庫Albumentations使用總結