求平方根
(牛客网—牛客题霸算法篇—NC32)
题目描述
实现函数 int sqrt(int x).
计算并返回 x 的平方根(向下取整)
思路
Java实现
先认真观察,当x>4时,它的平方根一定不会超过自身的二分之一。
使用二分法,根据mid的值与x/mid的值进行比较,如果mid>x/mid,说明mid的值大了,需要向mid之前缩小范围,否则说明mid的值小了,需要向mid之后缩小范围。
需要注意的是,题目中要求向下取整。
代码实现
import java.util.*;
public class Solution {
/**
* @param x int整型
* @return int整型
*/
public int sqrt (int x) {
// write code here
int left=1;
int right=x/2;
int mid=0;
int temp=0;
if(x<0){
return 0;
}else if(x<2){
return x;
}else{
while(left<right){
//mid=left+(right-left+1)/2;
mid=(left+right+1)/2;
temp=x/mid;
if(mid>temp){//找大了
right=mid-1;
}else{
left=mid;
}
}
}
return left;
}
}