69. x 的平方根
实现 int sqrt(int x) 函数。
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
需要注意的点
显然这道题最容易想到的方法就是二分法
但由于存在 判断需要用到 平方
所以我们必须处理类型溢出的问题
方法就是在平方的时候转换为long类型
public static int mySqrt(int x) {
// 考虑采用 二分法
int low = 0;
int high = x;
while(low <= high){
int mid = low +((high-low) >> 1);
if ((long) mid * mid == x){
return mid;
}
if ((long) mid * mid > x){
high = mid -1;
}else {
low = mid + 1;
}
}
return high;
}