实现 int sqrt(int x)
函数。
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
class Solution {
public int mySqrt(int x) {
//先对左边界进行判断
if(x<=1){
return x;
}
//Integer.MAX_VALUE的平方根约等于46340.95
int max = 46341;
//int max = 46340;
对右边界进行判断 2147395600 = 46340*46340
//if(2147395600<=x){
// return max;
//}
int min = 0;
int cur = max/2;
//二分法
while(cur>min){
int temp = cur*cur;
if(temp > x){
max = cur;
}else if(temp < x){
min = cur;
}else{
//刚好相等
return cur;
}
//重新设置中点
cur = (max + min)/2;
}
return cur;
}
}