相当简单的题目,但是出现的概率还挺高的
解法都在代码里,不懂就留言或者私信
class Solution {
public int mySqrt(int x) {
/**0的平方根是0 */
if(x == 0) {
return 0;
}
/**1~3的平方根是1 */
if(x <= 3) {
return 1;
}
/**其他情况我们采用二分查找,范围1~x/2*/
int left = 1;
int right = x / 2;
int ans = -1;
while(left <= right) {
long mid = left + ((right - left) >> 1);
if(mid * mid <= x) {
ans = (int)mid;
left = (int)mid + 1;
} else {
right = (int)mid - 1;
}
}
return ans;
}
}