实现函数 int sqrt(int x).
计算并返回x的平方根(向下取整)
public int sqrt (int x) {
// write code here
//我开始的做法,直接遍历
// if(x == 0){
// return 0;
// }
// if(x <= 3){
// return 1;
// }
// for(int i = 2;;i++){
// if((i - 1) * (i - 1) < x && (i + 1) * (i + 1) > x){
// return i;
// }
// }
//查了查网上的做法,当x>=4时,平方根不会超过x/2,使用二分法
if (x <= 0){
return x;
}
long left = 1;
long right = x;
while(left < right) {
long middle = (left + right) / 2;
if (middle * middle <= x && (middle + 1) * (middle + 1) > x) {
return (int)middle;
} else if (middle * middle < x) {
left = middle;
} else {
right = middle;
}
}
return (int) left;
}