Description
Submission
2147395600 and 2147395599 are two boundary cases.
class Solution { public: int mySqrt(int x) { long res = mySqrtBinary(x, 0, x / 2); res -= 1; while((res + 1) * (res + 1) <= x) res++; return res; } private: int mySqrtBinary(int x, int a, int b) { if(a >= b) return b; long mid = (a + b) / 2; if(mid * mid < x) { return mySqrtBinary(x, mid + 1, b); } return mySqrtBinary(x, a, mid - 1); } };