您的位置:首页 > 其它

leetcode 69 Sqrt(x)

2016-08-09 19:58 337 查看
Implement
int sqrt(int x)
.

Compute and return the square root of x.

这道题目是写int类型开平方的方法,这题的解法有很多,可以通过遍历来实现,我的方法还是和之前的一道题目相似,用二分查找的方式,这道题目一定还有更简单的方法,先说一下我的算法:

class Solution {

public:

    int mySqrt(int x)

    {

        if(x==0||x==1)

        {

            return x;

        }

        int low=1;

        int high=x;

        int result=low/2+high/2;

        if(result>46340)

        {

            high=46341;

            result=low/2+high/2;

        }

        while(result!=low)

        {

            if(result*result<x)

            {

                low=result;

            }

            else if(result*result>x)

            {

                high=result;

            }

            else

            {

                return result;

            }

            result=low/2+high/2;

            if(low%2==1&&high%2==1)

            {

                result++;

            }

        }

        return low;

    }

};

有几点需要注意的是,之前说到为了避免超出int范围而拆分除法的方式,在这里需要判断,因为两个奇数和的一半用这种方法可能会比原有结果少1,二是较大的数字开平方,用一半来求的话再平方可能会超出int范围,需要进行判断。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: