(LeetCode每日一刷17) x 的平方根

题目描述:

实现 int sqrt(int x) 函数。

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

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

示例:

示例 1:

输入: 4
输出: 2

示例 2:

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

我提交的代码:

class Solution {
public:
    int mySqrt(int x) {
        int front_half = x / 2;
        int res;
        if(x <= 1)
        {
            return x;
        }
        while(1)
        {
            res = x / front_half;
            if(front_half == res)
            {
                return front_half;
            }
            else if(res < front_half)
            {
                front_half = front_half / 2;
            }
            else if(res > front_half)
            {
                int temp = res - front_half;
                for (int i = 1; i <= temp; ++i)
                {
                    res = x / (front_half + i);
                    if(front_half + i - 1 >= res)
                    {
                        if(front_half + i == x)
                            return res;
                        else
                            return front_half + i - 1;
                    }
                }    
            }
            
        }
        
    }
};

猜你喜欢

转载自blog.csdn.net/songsong2017/article/details/84590411
今日推荐