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 1:
Input: 4
Output: 2
Example 2:
Input: 8
Output: 2
Explanation: The square root of 8 is 2.82842…, and since
the decimal part is truncated, 2 is returned.
思路
本来想暴力解但一想肯定超时 于是换成了二分查找
class Solution {
public int mySqrt(int x) {
if(x<=1){
return x;
}
int start = 1;
int end =x;
int mid = 0;
while(start <= end){
mid = (end-start)/2 + start;
if(mid == x/mid){
return mid;
}
else{
if(mid >x/mid){
end = mid -1;
}
else {
start = mid +1;
}
}
}
return end;
}
}
很简单唯一想不明白的是mid的确定
mid = (end-start)/2 + start;