二分法
Python
class Solution:
"""
@param x: An integer
@return: The sqrt of x
"""
def sqrt(self, x):
# write your code here
m = x
while m * m != x:
while m * m > x:
m = m / 2
n = 2 * m + 1
while m * m < x:
if m * m <= x and (m + 1) * (m + 1) >= x:
if(m + 1) * (m + 1) == x:
return m + 1
else:
return m
m = (n + m) / 2
return m
Java
class Solution {
/**
* @param x: An integer
* @return: The sqrt of x
*/
public int sqrt(int x) {
// write your code here
long m = x;
while(m * m != x){
while(m * m > x){
m = m / 2 + 1;
}
long n = 2 * m;
while(m * m < x){
if (m * m <= x && (m + 1) * (m + 1) >= x){
if((m+1) * (m+1) == x){
return (int)m+1;
}
else{
return (int)m;
}
}
m = (m + n) / 2;
}
}
return (int) m;
}
}