一、Description
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.
题目大意:
实现sqrt函数的功能,如果x的平方根为小数则只保留整数部分并返回。
二、Analyzation
这个题考虑二分法比较快,每次取中间值与x比较大小,如果mid = x / mid,则直接返回mid;如果mid < x / mid,则让left = mid + 1,重新设定mid;如果mid > x / mid,则让right = mid - 1,并重新设定mid。
三、Accepted code
public int mySqrt(int x) {
if(x <= 0)
return 0;
int left = 1,right = x,mid = (left + right) / 2;
while(left <= right){
if(mid == x / mid)
return mid;
else if(mid < x / mid)
left = mid + 1;
else if(mid > x / mid)
right = mid - 1;
mid = (left + right) / 2;
}
return right;
}