题目
描述
实现函数 int sqrt(int x).
计算并返回 x 的平方根(向下取整)
要求:空间复杂度 O(1),时间复杂度 O(logx)
思路
采用二分法求解。
代码
python版本:
class Solution:
def sqrt(self , x: int) -> int:
# write code here
return int(x**0.5)
c++版本:
class Solution {
public:
/**
*
* @param x int整型
* @return int整型
*/
int sqrt(int x) {
// write code here
if(x==1 || x==0){
return x;
}
int left = 0;
int right = x;
int res = 0;
while(right>=left){
int mid = (left+right)/2;
if(mid <= x/mid && x/(mid+1) < (mid+1)){
return mid;
}
if(x/mid>mid){
left = mid + 1;
}
else{
right = mid - 1;
}
}
return res;
}
};