QUESTION:
Implement int sqrt(int x)
.
Compute and return the square root of x.
SOLUTION;
public class Solution {
public int mySqrt(int x) {
int low=0;
int high=x;
if(x==0||x==1)
return x;
while(low<high)
{
int mid=(high-low)/2+low;
if(mid==x/mid)
return mid;
else if(mid>x/mid)
{
if((mid-1)<=x/(mid-1))
return mid-1;
else
high=mid-1;
}
else if(mid<x/mid)
{
if((mid+1)>x/(mid+1))
return mid;
else if((mid+1)<x/(mid+1))
low=mid+1;
else
return mid+1;
}
}
return x;
}
}
数太大了就不要用*了!!用/
DISCUSSION 中的解
public int sqrt(int x) {
if (x == 0)
return 0;
int left = 1, right = Integer.MAX_VALUE;
while (true) {
int mid = left + (right - left)/2;
if (mid > x/mid) {
right = mid - 1;
} else {
if (mid + 1 > x/(mid + 1))
return mid;
left = mid + 1;
}
}
}