题目描述
Implementint sqrt(int x).
Compute and return the square root of x.
- 思路
求x的平方根
二分求近似值(注意溢出)
public class Solution {
public int sqrt(int x) {
if(x < 0)
return -1;
int left = 1;
int right = x / 2;
int ans = x;
while(left <= right){
int mid = left + (right - left) / 2;
if(x / mid > mid){ // x > mid * mid,防溢出
left = mid + 1;
ans = mid;
}else if(x / mid < mid){
right = mid - 1;
}else{
return mid;
}
}
return ans;
}
}