Implement
int sqrt(int x).
Compute and return the square root of x.
Solution:
public class Solution {
public int sqrt(int x) {
if(x <= 0)
return 0; //Is an error
int i = 1;
while(i<Integer.MAX_VALUE/(4*i) && (4*i*i)<x) i*=2;
//Binary search between i and 2*i extended to long to avoid overflow issues
long begin = i;
long end = 2 * i;
while(begin<end)
{
long midpoint = (begin + end +1)/2;
if (midpoint * midpoint == x)
return (int) midpoint;
if (midpoint * midpoint < x)
begin = midpoint;
else
end = midpoint-1;
}
return (int) begin;
}
}
No comments :
Post a Comment