注意在计算mid的时候要先将left和right转化成float或者double
class Solution { public: /** * * @param x int整型 * @return int整型 */ int mysqrt(int x) { // write code here if(x <= 1) return x; int left, right, mid; for(left = 1, right = x;left < right; ) { mid = (float)left / 2 + (float)right / 2; if(mid == x / mid) { break; } else if (mid > x / mid) { if(right == mid) break; right = mid; } else { if(left == mid) break; left = mid; } } // cout<< left << mid << right; if (mid > x / mid) return left; else return mid; } };