問題:web
For a web developer, it is very important to know how to design a web page's size. So, given a specific rectangular web page’s area, your job by now is to design a rectangular web page, whose length L and width W satisfy the following requirements:ui
1. The area of the rectangular web page you designed must equal to the given target area.
2. The width W should not be larger than the length L, which means L >= W.
3. The difference between length L and width W should be as small as possible.
You need to output the length L and the width W of the web page you designed in sequence.spa
Example:ci
Input: 4 Output: [2, 2] Explanation: The target area is 4, and all the possible ways to construct it are [1,4], [2,2], [4,1]. But according to requirement 2, [1,4] is illegal; according to requirement 3, [4,1] is not optimal compared to [2,2]. So the length L is 2, and the width W is 2.
Note:rem
解決:get
① 本質上是求一個整數(面積)差值最小的兩個因子,而且長大於寬。it
class Solution { //551ms
public int[] constructRectangle(int area) {
int x = area;
int y = 1;
int diff = x - y;
for (int i = x;i >= y;i --){
if (area % i == 0){
if (diff > Math.abs(i - area / i)){
diff = Math.abs(i - area / i);
x = i;
y = area / i;
}
}
}
return new int[]{x,y};
}
}io
② class
class Solution { //5ms
public int[] constructRectangle(int area) {
int w = (int)Math.sqrt(area);
while(area % w != 0 ) w --;
return new int[]{area / w, w };
}
}angular