141. 对x开根

实现 int sqrt(int x) 函数,计算并返回 x 的平方根。
样例

样例 1:
    输入:  0
    输出: 0


样例 2:
    输入: 3
    输出: 1
    
    样例解释:
    返回对x开根号后向下取整的结果。

样例 3:
    输入: 4
    输出: 2


挑战

O(log(x))


int sqrt(int x) {
    // write your code here

    int ret = 0;

    if (x == 0)
        return ret;

    if (x == 1)
        return 1;


    long long count = 1;
    long long tmp = 1;
    for (long long i = 1; i<33; i++)
    {
        if (tmp > x)
        {
            break;
        }
        count = count * 2;
        tmp = count * count;
    }

    for (long long i = count; i > 1; i--)
    {
        long long tmp = i* i;
        if (tmp > x)
            continue;
        if (i*i <= x)
        {
            ret = i;
            break;
        }
    }
    return ret;


}


void test()
{
    int a = 2147483647;
    int ret = sqrt(a);
}

猜你喜欢

转载自blog.csdn.net/yinhua405/article/details/109283031