class Solution {
public int mySqrt(int x) {
if (x == 0 || x == 1) return x;
long l = 0;
long r = x;
long mid = (l + r) / 2;;
while (r - l > 1) {
mid = (l + r) / 2;
long mid2 = mid * mid;
if (mid2 > x)
r = mid;
else if (mid2 < x)
l = mid;
else
return (int) mid;
}
return (int) l;
}
}
注:
1. 实际考的是二分法。
2. 之所以改成long是因为int很大的时候无法计算出平方数。