Implement int sqrt(int x)
.
Compute and return the square root of x.
x is guaranteed to be a non-negative integer.
Example 1:
Input: 4 Output: 2
Example 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.
class Solution {
public int mySqrt(int x) {
// long val = 0, tmp = 0;
//
// for (long i = 1; i <= x / 2 + 1; ++ i) {
// tmp = i * i;
// if (x == tmp) {
// val = i;
// break;
// }
// else if (x < tmp) {
// val = i - 1;
// break;
// }
// }
//
// return (int) val;
long tmp = 0, val = 0, rst = 0;
long head = 0, tail = x / 2 + 1;
while (head <= tail) {
tmp = (head + tail) / 2;
if ((val = tmp * tmp) == x) {
rst = tmp;
break;
}
else if (val < x) {
head = tmp + 1;
}
else {
tail = tmp - 1;
rst = tail;
}
}
return (int) rst;
}
}