力扣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的平方根的主要内容,如果未能解决你的问题,请参考以下文章