题目描述
实现函数 int mysqrt(int x).
计算并返回x的平方根(向下取整)
解法
//解法:二分查找
//时间:O(logx) 空间O(1)
int mysqrt(int x) {
if (x <= 0) return 0;
int l = 1, r = x;
while (l < r) {
long mid = (l + r) / 2;
if (mid * mid <= x && (mid + 1) * (mid + 1) > x) {
return mid;
} else if(mid * mid > x) {
r = mid;
} else {
l = mid;
}
}
return l;
}


京公网安备 11010502036488号