题目
Implement int sqrt(int x).
Compute and return the square root of x.
分析两种方法:
1. 牛顿法(解法1)
2. 二分查找(解法2)
解法1
public class Sqrt {
public int sqrt(int x) {
double ret = 1, temp = 0;
while ((int) ret - (int) temp != 0) {
temp = ret;
ret = ret / 2 + (double) x / (2 * ret);
}
return (int) ret;
}
}解法2
public class Sqrt {
public int sqrt(int x) {
if (x < 2) {
return x;
}
int left = 1;
int right = x;
while (left + 1 < right) {
int mid = left + (right - left) / 2;
int result = x / mid;
if (result > mid) {
left = mid;
} else if (result < mid) {
right = mid;
} else {
return mid;
}
}
return left;
}
}LeetCode | Sqrt(x),布布扣,bubuko.com
原文:http://blog.csdn.net/perfect8886/article/details/20739893