492. [数学运算]构造矩形
492. 构造矩形
直接从\(1\)开始寻找\({L,W}\)的组合,这样的效率其实不高。
// 执行耗时:68 ms,击败了20.65% 的Java用户
// 内存消耗:36.3 MB,击败了54.36% 的Java用户
class Solution {
public int[] constructRectangle(int area) {
// L >= W
// area = L * W
int L = 1, W = area;
while(L < W || L * W != area){
L++;
W = area / L;
}
return new int[] {L, W};
}
}
下面是优化版:
先计算\(Area\)的平方根,如果可以除尽则直接返回;
从其平方根开始向\(1\)开始遍历是否可以被\(Area\)除尽,可以则直接返回这两个数;
// 执行耗时:0 ms,击败了100.00% 的Java用户
// 内存消耗:36.3 MB,击败了41.37% 的Java用户
class Solution {
public int[] constructRectangle(int area) {
int sqrt = (int)Math.sqrt(area);
if(sqrt * sqrt == area){
return new int[]{sqrt, sqrt};
}
for(int i = sqrt; i >= 1; i --){
if(area % i == 0){
return new int[]{area / i, i};
}
}
return null;
}
}

浙公网安备 33010602011771号