灵感来源
-
保持更新,努力学习
-
python脚本学习
构造矩形
解题思路
-
矩形的宽度
W
最大为√area
(取整数部分)。 -
从
√area
开始向下寻找最大的W
,使得area
能被W
整除。 -
此时
L = area // W
,且L
和W
的差值最小。pythonimport 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]