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.
求根号x
思路:
结果类型的二分法。
问题转化为小于x的序列中,最后一个平方小于x的数。
class Solution {
public int mySqrt(int x) {
if (x == 0 ) return 0;
if (x == 1 ) return 1;
int start = 0, end = x;
while(start+1 < end){
int mid = start + (end - start)/2;
if(mid <= x/mid){
start = mid;
}else{
end = mid;
}
}
return start;
}
}