题目地址:
https://leetcode.com/problems/sqrtx/
求的平方根,向下取整。问题可以转述为,找到最大的int使得,可以用二分法。为了防止溢出,用long过渡一下。
class Solution {
public int mySqrt(int x) {
int l = 0, r = x;
while (l < r) {
int mid = (int) (l + (((long) (r - l) + 1) >> 1));
if (mid <= x / mid) {
l = mid;
} else if (mid > x / mid) {
r = mid - 1;
}
}
return l;
}
}
时间复杂度。几个注记:
来源:CSDN
作者:edWard的算法世界
链接:https://blog.csdn.net/qq_46105170/article/details/104004601