实现int sqrt(int x)
函数,计算并返回 x 的平方根。
sqrt(3) = 1
sqrt(4) = 2
sqrt(5) = 2
sqrt(10) = 3
/*
思路:二分法
博客
*/
public class Solution {
public int sqrt(int x) {
// write your code here
int low = 0, high = x;
//循环
while(low <= high) {
int mid = low + (high - low)/2;
long square = (long)mid * (long)mid;
long square1 = (long)(mid + 1) * (long)(mid + 1);
long square2 = (long)(mid - 1) * (long)(mid - 1);
if(square < x) {//只满足这个条件
if(square1>x){
return mid;
}
low = mid + 1;
}
else if(square>x) {
if(square2<x){
return mid-1;
}
high = mid - 1;
}
if(square == x) return mid;
//if(square < x && square1 > x) return mid;
//if(square > x && square2 < x) return mid - 1;
}
return -1;
}
}