【LeetCode 簡單題】114-構造矩形
阿新 • • 發佈:2018-11-27
宣告:
今天是第114道題。設計一個長度為 L 和寬度為 W 且滿足一些要求的矩形的頁面。以下所有程式碼經過樓主驗證都能在LeetCode上執行成功,程式碼也是借鑑別人的,在文末會附上參考的部落格連結,如果侵犯了博主的相關權益,請聯絡我刪除
(手動比心ღ( ´・ᴗ・` ))
正文
題目:作為一位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 且為正整數。
- 你設計的頁面的長度和寬度必須都是正整數。
解法1。最符合題目要求的就是area開方,如果剛好為整數就完美,所以入口就是先從最接近完美答案的根號area開始,逐漸+1,直到能被area整除,程式碼如下。
執行用時: 1256 ms, 在Construct the Rectangle的Python提交中擊敗了14.50% 的使用者
class Solution(object): def constructRectangle(self, area): """ :type area: int :rtype: List[int] """ import math L = int(math.ceil(math.sqrt(area))) while area % L != 0: L += 1 W = int(area/L) return [L,W]
結尾
解法1:https://www.polarxiong.com/archives/LeetCode-492-construct-the-rectangle.html