LeetCode:Sqrt(x)

来源:互联网 发布:软件测试管理软件 编辑:程序博客网 时间:2024/05/16 09:46

问题描述:

Implement int sqrt(int x).

Compute and return the square root of x.

1、开始我想到的是二分法,但是貌似二分法还是超时了。

class Solution {public:   int mySqrt(int x)    {       int low = 1;       int high = x;       int mid = (1 + x) / 2;       for(int i = mid; i < x; ++i)       {           if(i * i == x)           {                return i;           }           else if(i * i > x )                 {                  mid = (mid + low) / 2;                 }                 else                 {                     mid = (mid + high) / 2;                 }       }       return 0;    }};
2、紧接着我想到了牛顿迭代法,最后尝试了好久,终于通过

class Solution {public:   int mySqrt(int x)    {       if(x == 0)        return 0;       double pre = 0;       double cur = 1;       do       {           pre = cur;           cur = x / (2 *pre) + pre / 2.0;       }while (abs(cur - pre) > 0.00001);        return int(pre);    }};


0 0
原创粉丝点击