Leetcode 69.x 的平方根 (java)

2018-10-17  本文已影响0人  SenwinFeng

题目:

实现int sqrt(int x)函数。

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

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

示例 1:

输入:4

输出:2

示例 2:

输入:8

输出:2

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

思路:

典型的二分法

代码:

解法一

public int mySqrt(int x) {
    if(x <= 1)
        return x;
    int left = 1,right = x;
    while(left <= right){
        int mid = left + (right -left) / 2;
        int sqrt = x / mid;
        if(sqrt == mid)
            return mid;
        else if(sqrt < mid)
            right = mid - 1;
        else
            left = mid + 1;
    }
    return right;
}

解法二:

public int mySqrt(int x) {
   long r = x;
while (r*r > x)
    r = (r + x / r) / 2;
return (int) r; 
}
上一篇下一篇

猜你喜欢

热点阅读