解题思想
整数二分
这里需要注意:有可能实际的平方根在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; } };