leetcode 69 x的平方根 (实现平方根函数)

//方法一:利用二分搜索法来做
//Time:O(log(n)),Space:O(1)
class Solution 
{
public:
    int mySqrt(int x) 
    {
        int begin=0;
        int end=x;

        while(begin<=end)
        {
             long mid=begin+((end-begin)>>1);
             long mid2=mid*mid;

             if(mid2>x)
             {
                 end=mid-1;
             }
             else if(mid2<x)
             {
                 begin=mid+1;
             }
             else
             {
                 return mid;
             }
        }

        return (int)end;
    }
};
//方法二,牛顿迭代法,牛顿迭代法是一种求解方程根的通用解法
//Time:O(log(n)),Space:O(1)
class Solution 
{
public:
    int mySqrt(int x) 
    {
        long n=x;

        while(n*n>x)
        {
             n=(n+x/n)/2;
        }

        return (int)n;
    }
};

 

posted @ 2020-01-07 19:10  repinkply  阅读(8)  评论(0)    收藏  举报