492. 构造矩形
思路:数学
根据题目要求,可知:
- L ⋅ W = a r e a L\cdot W =area L⋅W=area,意味着area可以被W整除
- L>=W,结合要求1可知 W ⋅ W ≤ a r e a W \cdot W\leq area W⋅W≤area,从而有 W ≤ ⌊ a r e a ⌋ W \leq \lfloor\sqrt{area}\rfloor W≤⌊area⌋
初始化 W = ⌊ a r e a ⌋ W = \lfloor\sqrt{area}\rfloor W=⌊area⌋,不断循环area是否被W整除,可以跳出循环。
class Solution {
public:
vector<int> constructRectangle(int area) {
int n=sqrt(area);
while(area%n!=0)--n;
return {area/n,n};
}
};
时间复杂度 O( a r e a \sqrt{area} area)
空间复杂度 O(1)