leetcode 69 x的平方根

实现 int sqrt(int x) 函数。

计算并返回 x 的平方根,其中 是非负整数。

由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。

示例 1:   输入: 4 输出: 2

示例 2:   输入: 8 输出: 2 说明: 8 的平方根是 2.82842...,   由于返回类型是整数,小数部分将被舍去。

 思路:采用二分法

     这道题要求我们求平方根,我们能想到的方法就是算一个候选值的平方,然后和x比较大小,为了缩短查找时间,我们采用二分搜索法来找平方根。

public int mySqrt(int x) {
    if(x <= 1) return x;
    int left = 0;
    int right = n;
    while(left <= right){
        if(x / mid >= x){
            left = mid + 1;
        }else{
            right = mid - 1;
        }
    }
    return right;
}

牛顿迭代法

public int mySqrt(int x) {
    long res = x;
    while(res * res > x){
        res = (res + x / res) / 2;
    }
    return (int)res;
}

猜你喜欢

转载自blog.csdn.net/qq_43322057/article/details/84451585