题目描述:实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
int mySqrt(int x) {
if(x==0) return 0;
else if(x<4) return 1;
else{
int left = 2,right = x/2;
long long mid = left+(right-left)/2;;
while(mid*mid!=x&&left<mid){
if(mid*mid>x) right = mid;
else left = mid;
mid = left+(right-left)/2;
}
return mid;
}
}
采用二分法,注意边界条件,以及mid*mid会出现大数,需要long
执行用时 :4 ms, 在所有 cpp 提交中击败了88.60%的用户
内存消耗 :8.1 MB, 在所有 cpp 提交中击败了86.60%的用户