Leetcode OJ 69 Sqrt(x) [Easy]
题目描述:
Implement int sqrt(int x).
Compute and return the square root of x.
题目理解:
完成函数sqrt(x),求x的平方根。
测试用例:
功能测试:正整数;
边界测试:0;
分析:
1. 二分法
2. 初始时左右边界是1和x本身;中间值是left + (right-left)/2;
3. 循环,中间值大了则根出现在左边区间,中间值小了则根出现在右边区间;
4. 因为函数返回的是整数,如果根是小数,则返回其整数部分的整数,方法是如果中间值小了,且中间值+1大了,则返回中间值
5. 边界情况,x是0时返回0,x是1时返回1;
解答:
class Solution {
public int mySqrt(int x) {
if (x == 0)return 0;
int left =1,right= x;
int mid =left + (right-left)/2;
while(true){
if(x/mid< mid){
right = mid - 1;
}
else{
if(x / (mid + 1) < (mid + 1))
return mid;
left = mid + 1;
}
mid = left + (right - left)/2;
}
}
}