0069. Sqrt(solutions/x)
Description
**Input:** x = 4
**Output:** 2**Input:** x = 8
**Output:** 2
**Explanation:** The square root of 8 is 2.82842..., and since the decimal part is truncated, 2 is returned.ac
class Solution {
public int mySqrt(int x) {
// edge case
if (x < 0) throw new IllegalArgumentException("must greater than 0");
if (x == 0) return 0;
// binary search
int l = 0, r = x;
while (l + 1 < r) {
int mid = l + (r - l) / 2;
if (mid == x / mid) return mid;
if (mid < x / mid) {
l = mid;
} else {
r = mid;
}
}
// final check
return r == x / r ? r : l;
}
}Last updated