题目描述:
实现函数 int sqrt(int x).
计算并返回x的平方根(向下取整)
解题分析:
使用二分法,判断条件为mid * mid == x || ((mid * mid < x) && ((mid + 1) * (mid + 1) > x))
class Solution {
public:
/**
*
* @param x int整型
* @return int整型
*/
int sqrt(int x) {
// write code here
if (x <= 0) {
return 0;
}
long left = 0;
long right = x;
while (left <= right) {
long mid = left + (right - left)/2;
if (mid * mid == x || ((mid * mid < x) && ((mid + 1) * (mid + 1) > x))) {
return int(mid);
}
else if (mid * mid < x) {
left = mid + 1;
}
else if (mid * mid > x) {
right = mid - 1;
}
}
return -1;
}
};