一开始想用二分法,在死循环中,利用完全相等作为判断条件,得到平方根。但在实际操作过程中,会遇到4开根号,得到结果是1.99999999,计算机会舍去小数,从而导致结果出错,参考别人的解答,使用max-min>0应该是二分法最好的判断条件了
class Solution {
public int mySqrt(int x) {
if(x == 1)
return 1;
int max = x;
int min = 0;
int num = 0;
while (max-min > 1) {
num = (max + min)/2;
if(x/num < num) { //不用num*num是因为可能发生溢出
max = num;
}
else {
min = num;
}
}
return min;
}
}