力扣刷题(第九十九天)

灵感来源

  • 保持更新,努力学习

  • python脚本学习

构造矩形

解题思路

  1. 矩形的宽度 W 最大为 √area(取整数部分)。

  2. √area 开始向下寻找最大的 W,使得 area 能被 W 整除。

  3. 此时 L = area // W,且 LW 的差值最小。

    python 复制代码
    import math
    
    class Solution:
        def constructRectangle(self, area: int) -> List[int]:
            # 计算sqrt(area)并取整,得到W的最大可能值
            W = int(math.sqrt(area))
            
            # 从W的最大可能值开始向下寻找,直到找到能整除area的W
            while area % W != 0:
                W -= 1
            
            # 计算对应的L
            L = area // W
            
            return [L, W]

逐行解释

python 复制代码
import math

class Solution:
    def constructRectangle(self, area: int) -> List[int]:
        # 计算sqrt(area)并取整,得到宽度W的最大可能值
        # 因为W <= L,且W*L=area,所以W最大为sqrt(area)
        W = int(math.sqrt(area))
        
        # 从W的最大可能值开始向下寻找
        # 直到找到第一个能整除area的W,此时W即为最优宽度
        while area % W != 0:
            W -= 1
        
        # 计算对应的长度L,L = area // W
        L = area // W
        
        # 返回结果列表[L, W],确保L >= W
        return [L, W]