实现 int sqrt(int x) 函数。
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
示例 1:
输入: 4
输出: 2
示例 2:
输入: 8
输出: 2
说明: 8 的平方根是 2.82842…,
由于返回类型是整数,小数部分将被舍去。
第一次的代码:
非常的原始,找到一个a,使得a是最大的平方小于x的数,第二步,将a循环+1逼近真实值
if x<=1:
return x
else:
a=x//2
while a*a>x:
a=a//2
while (a+1)*(a+1)<=x:
a=a+1
return a
1300ms,排名5%
第二次代码:
使用二分法逼近,注意设置循环终止条件,若设置b>a等,会进入死循环
if x<=1:
return x
else:
a=1
b=x
c=(a+b)//2
while b-a>=2:
if c*c==x:
return c
elif c*c<x:
a=c
c=(a+b)//2
else:
b=c
c=(a+b)//2
return c
40ms,排名70%