力扣刷题(第九十九天)
灵感来源
- 保持更新,努力学习
- python脚本学习
构造矩形
解题思路
- 矩形的宽度
W
最大为√area
(取整数部分)。 - 从
√area
开始向下寻找最大的W
,使得area
能被W
整除。 - 此时
L = area // W
,且L
和W
的差值最小。import mathclass Solution:def constructRectangle(self, area: int) -> List[int]:# 计算sqrt(area)并取整,得到W的最大可能值W = int(math.sqrt(area))# 从W的最大可能值开始向下寻找,直到找到能整除area的Wwhile area % W != 0:W -= 1# 计算对应的LL = area // Wreturn [L, W]
逐行解释
import mathclass 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 // WL = area // W# 返回结果列表[L, W],确保L >= Wreturn [L, W]