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


京公网安备 11010502036488号