class Solution(object):
def constructRectangle(self, area):
"""
:type area: int
:rtype: List[int]
"""
start = int(area ** 0.5)
while area % start != 0:
start -=1
return [area/start , start]
Sol = Solution()
print Sol.constructRectangle(19)
0,启发
1,题目要求找到一个数字的两个因子L和R,使得:
(1)L>=R (2)L和R尽量接近,相等最好(3)L*R = area
2,实现不算困难,最初想到直接找area的所有因子来求,虽然可解,但是TLE,然后想到从area的开方处开始遍历,仍然在area过大时TLE。在参考了他人的代码后,得解。
3,从开方处开始查找,以递减的方式。由于是使用了while而非for,极大程度的减少了执行for后的各个判断步骤,从而规避了TLE的问题。