NC32 求平方根
描述
实现函数 int sqrt(int x).
计算并返回x的平方根(向下取整)
示例1
输入:
2
返回值:
1
实现代码加注释:
C++/Java都可以
class Solution {
public:
/**
*
* @param x int整型
* @return int整型
*/
int sqrt(int x) {
// write code here
//当x=0或者1 时作为特例,输入什么便返回什么
if(x<=1){
return x;
}
//进行二分查找设置区间[low,high]
long low = 1;
long high = x;
//保存结果
long resut = 0;
while(low <= high){
//low + (high-low)/2;这种方式设置中间节点可以最大程度
//防止溢出
long mid = low + (high-low)/2;
//将其mid的平方与x比较,进行区间的缩小
if(mid * mid <= x){
//若等于则直接返回
resut = mid;
//若小于则设置区间为[mid+1,high]
low = mid+1;
}else{
//若大于则设置区间为[mid,high]
high = mid-1;
}
}
//返回取整数数值
return (int)resut;
}
};