解题思想
整数二分
这里需要注意:有可能实际的平方根在mid和mid-1中间,因此需要及时return mid-1,以防错过解的区间。其他地方均按照整数二分方法的模板去做即可。
class Solution {
public:
/**
*
* @param x int整型
* @return int整型
*/
int divide(int l, int r, int x)
{
int mid ;
while(l < r)
{
mid = (l + r + 1) / 2;
if(x/mid<mid)
{
if(x/(mid-1)<mid-1) r = mid - 1;
else return mid - 1;
}
else l = mid;
}
return l;
}
int mysqrt(int x) {
// write code here
if(x==0) return 0;
int res = divide(1, x, x);
return res;
}
}; 
京公网安备 11010502036488号