解法1:根据平方数的性质——连续n个奇数相加的结果一定是平方数。
如:9=1+3+5;16=1+3+5+7;
所以,不断的进行奇数相加,并判断x大小即可
public class Solution {
public int mysqrt(int x) {
int i=1;
int res=-1;
while(x>=0){
x=x-i;
res++;
i=i+2;
}
return res;
}
}解法2:二分法
public class Solution {
public int mysqrt(int x) {
if (x<2)
return x;
int left = 1;
int right = x/2;
int mid =1;
while(left<=right){
mid = (left+right)/2 ;
if (x/mid==mid){
return mid;
}
else if (x/mid<mid){
right=mid-1;
}
else{
left = mid+1;
}
}
return right;
}
}
京公网安备 11010502036488号