牛顿迭代法
class Solution {
public:int sqrt(int x) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if (x<=1) {
return x;
}
int left=0;
int right=x;
while (left <= right) {
int mid = left+(right-left)/2;
int now = x/mid;
if (now < mid) {
right = mid-1;
} else if(now > mid) {
left = mid+1;
} else {
return mid;
}
}
return left>right?right:left;
}
};