leetcode-69-sqrt(x)

题目

求解Sqrt(x)返回整数结果

分析

方法一利用二分查找,否则会超时
方法二牛顿迭代公式,此方法可以返回相对精准的double结果

C++代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

class Solution {
public:
int (int x) {
if(x == 0)
return 0;
int e = x / 2 + 1;
int s = 1;
while(s <= e){
//防止s+e越界,所以使用此公式求解中间值
int mid = s + (e-s)/2;
long long sq = (long long)mid * (long long)mid;
if(sq == x) return mid;
if(sq < x)
s = mid + 1;
else e = mid - 1;
}
return e;
}
};

//方法二、牛顿迭代公式