Description:
Implement int sqrt(int x)
.
Compute and return the square root of x.
x is guaranteed to be a non-negative integer.
Example 1:
Input: 4 Output: 2
Example 2:
Input: 8 Output: 2
Explanation: The square root of 8 is 2.82842..., and since we want to return an integer,
the decimal part will be truncated
就是写一个开平方根的函数,百度一下开平方根的公式
就是逐次迭代,用代码实现一下就好,LeetCode的测试答案应该是有问题的,我得到的答案精度比它高,但是却判定我的答案错误,无语。
class Solution {
public:
int mySqrt(int x) {
float curr=(float)x/2;//x是int型,当不加强制转换时,x/2的值是个整数。这里要注意
float pre=0;
int result;
while(fabs(curr-pre)>0.1 ){
pre = curr;//之前这句写在了下面,导致curr一直等于pre,所以循环一直跳不出来。写循环时一定注意结束条件和循环变量的赋值是否正确。
curr=pre+(x/pre-pre)/2;
}
result = curr;
return result;
}
};