力扣69x的平方根

Posted 夏天吃辣椒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了力扣69x的平方根相关的知识,希望对你有一定的参考价值。

1、换函数exp()(0ms,100%;6.2MB,5%)

  int mySqrt(int x) {
         if(x==0)
         return x;
        int num=exp(0.5*log(x));
        if(long (num+1)*(num+1)<=x)
        return num+1;
        else
        return num;
     }

2、二分查找(4ms,59%;5.8MB,64%)

 int mySqrt(int x) {
         if(x<=1)
         return x;
         long left=1,right=x;
         long mid=(left+right)/2;
         while(left<=right){
             //因为很多数的算数平方根是夹在两个数中间的
             if(((mid*mid)<=x)&&((mid+1)*(mid+1)>x))
             return mid;
             //mid偏小,整体往右移动
             else if((mid*mid)<x){
                 left=mid+1;
                 mid=(left+right)/2;
             }
             //mid偏大,整体往右移动
             else {
                 right=mid-1;
                 mid=(left+right)/2;
             }
             
         }
         return 0;
     }

3、牛顿迭代(4ms,59%;5.8MB,60%):没看懂

 int mySqrt(int x) {
        if (x == 0) {
             return 0;
         }
 
         double C = x, x0 = x;
         while (true) {
             double xi = 0.5 * (x0 + C / x0);
             if (fabs(x0 - xi) < 1e-7) {
                 break;
             }
             x0 = xi;
         }
         return int(x0);
     }

 

以上是关于力扣69x的平方根的主要内容,如果未能解决你的问题,请参考以下文章

力扣 题目69- x 的平方根

精选力扣500题 第31题 LeetCode 69. x 的平方根c++ / java 详细题解

"细节魔鬼" - 二分查找

力扣69. x 的平方根

力扣69.x的平方根 C++ 二分解法

力扣279——完全平方数