Example: SQRT - rFronteddu/general_wiki GitHub Wiki
Given a non-negative integer x, return the square root of x rounded down to the nearest integer. The returned integer should be non-negative as well.
class Solution {
public int mySqrt(int x) {
// Given a non-negative integer x, return the square root of x rounded down
// to the nearest integer. The returned integer should be non-negative as well.
if (x == 1) {
return 1;
}
int start = 0;
int end = x;
while (start <= end) {
int mid = start + (end - start) / 2;
// protect from overflow
long square = (long) mid * mid;
if (square == x) {
return mid;
} else if (square < x) {
start = mid + 1;
} else {
end = mid - 1;
}
}
// Since we are rounding down, return end
return end;
}
}