【Leetcode】69. Sqrt(x) 【溢出?如何防止?】

xiaoxiao2021-02-28  114

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开根号的值作为上限。

对于数字加减乘除一定要警惕溢出,要建立意识啊!

转载请注明原文地址: https://www.6miu.com/read-27415.html

最新回复(0)