Implement int sqrt(int x)
.
Compute and return the square root of x.
class Solution {
public:
int sqrt(int x) {
int result = binary(0, x, x);
return result;
}
int binary(int start, int end, int target)
{
unsigned long long mid = start + (end-start)/2;
if(mid * mid <= target && (mid+1)*(mid+1) > target)
return mid;
else if(mid * mid > target)
{
return binary(start, mid-1, target);
}
else
{
return binary(mid+1, end, target);
}
}
};
Round 2:
class Solution {
public:
int sqrt(int x) {
int l = 0, r = x;
while(l <= r)
{
long mid = (l+r)/2;
long multi = mid * mid;
if(multi == x)
return mid;
else if(multi > x)
{
if((mid-1)*(mid-1) < x)
return mid-1;
r = mid-1;
}
else
{
if((mid+1)*(mid+1) > x)
return mid;
l = mid+1;
}
}
}
};