LeetCodeDay06----x的平方根

题目:实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
示例 1:输入: 4。输出: 2
示例 2:输入: 8。输出: 2说明: 8 的平方根是 2.82842...;由于返回类型是整数,小数部分将被舍去。

思路:

方法一:二分法。注意:将首和尾指针都设置为long型的,直到return时才将其转化为int型。

方法二:牛顿迭代法: 根据牛顿迭代的原理,可以得到计算sqrt(n)的迭代公式:X(n+1)=[X(n)+p/Xn]/2

源码:GitHub源码
方法一:

class Solution {
    public int mySqrt(int x) {   
        long low = 0;
        long high = x;
        while(low<=high){
            long mid = (low + high)/2;
            if(mid*mid < x)
                low = mid + 1;
            else if(mid*mid > x)
                high = mid - 1;
            else
                return (int)mid;
        }
        return (int)high;
    }
}

方法二:

class Solution {
    public int mySqrt(int a) {   
        long x = a;
        while (x * x > a) {
            x = (x + a / x) / 2;
        }
        return (int) x;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容