69.Sqrt(x) Implement int sqrt(int x).
Compute and return the square root of x.
代码: class Solution { public: int mySqrt(int x) { if(x<2) return x; int lef=0,rig=x; int mid=0;
while(rig>lef+1)
{
mid=(rig+lef)/2;
if( x/mid < mid )
{
rig=mid;
}
else
{
lef=mid;
}
}
return lef;
}
};
一开始我写的是这么个判断条件
if(x < mid*mid)
这里并没有注意到mid*mid会溢出!!!,溢出之后取模后又变成很小的,于是LeetCode提示Time Limit
怎么办?
也许你注意到了,改成这么个样子就不会溢出
if(x/mid < mid)
当然也有黑科技将INT_MAX开根号的值作为上限。
对于数字加减乘除一定要警惕溢出,要建立意识啊!