代码讲解
69 源代码
class Solution {
public int mySqrt(int x) {
int left=0,right=x/2+1;
int m=0;
while(left<=right){
//易错点1,容易忽略这个当平方比较大的时候会直接超过这个int型数据的范围
m=(left+right)/2;
if(1.0*m*m<1.0*x){
left=m+1;
}else if(1.0*m*m>1.0*x){
right=m-1;
}else return m;
}
return right;
}
}
367 源代码
class Solution {
public boolean isPerfectSquare(int num) {
int left=1,right=num/2+1;
int m=0;
while(left<=right){
//与69题的区别是,这一个找不到了就找不到了,上一个找不到你要确定一个最相近的
m=(left+right)/2;
if(1.0*m*m<1.0*num){
left=m+1;
}else if(1.0*m*m>1.0*num){
right=m-1;
}else return true;
}
return false;
}
}