[leetcode] problem 69 – sqrt(x)

Implement int sqrt(int x).

Compute and return the square root of x, where x is guaranteed to be a non-negative integer.

Since the return type is an integer, the decimal digits are truncated and only the integer part of the result is returned.

Example

No.1

Input: 4

Output: 2

No.2

Input: 8

Output: 2

Explanation: The square root of 8 is 2.82842…, and since we want to return an integer, the decimal part will be truncated.

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public int (int x) {
if (x == 0)
return 0;

int start = 1;
int end = x;

while (true) {
int mid = start + (end - start) / 2;

if (mid > x / mid)
end = mid - 1;
else {
if ((mid + 1) > x / (mid + 1))
return mid;

start = mid + 1;
}
}
}