注意在计算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;
    }
};