暴力查找法:
class Solution {
public:
int mySqrt(int x) {
int squareroot;
for(long int i = 0; i <= x; i++){
if(i*i == x){
squareroot = i;
break;
}else if(i*i > x){
if((i-1)*(i-1) < x){
squareroot = i-1;
break;
}
}
}
return squareroot;
}
};
二分查找法:
class Solution {
public:
int BinarySearch(int left, int right, int x){
long int mid = (left + right) / 2;
if(mid * mid == x){
return mid;
}else if(left + 1 == right){
return left;
}
if(x > mid * mid)
return BinarySearch(mid, right, x);
else
return BinarySearch(left, mid, x);
}
int mySqrt(int x) {
if(x == 0)
return 0;
if(x == 1)
return 1;
long int temp = 1;
while(temp*temp < x){
temp = temp * 10;
}
return BinarySearch(temp/10, temp, x);
}
};