classSolution:defmySqrt(self,x:int) ->int:if x in (0,1):return x l, r =0, xwhile l < r: m = (l + r) //2if m **2<= x < (m +1) **2:breakif m **2< x: l = melse: r = mreturn m
进阶: 浮点数版本
定义 mySqrt(x: float, e: int), 其中 e 为小数精度;
注: 代码未经过严格测试, 可能存在问题;
Python
classSolution:defmySqrt(self,x:float,e:int) ->int:if x in (0,1):return xassert x >0 flag =Falseif x <1:# 小于 1 的情况 x =1/ x flag =True l, r =0, xwhile l < r: m = (l + r) /2ifabs(m **2- x)<=0.1** e:breakif m **2< x: l = melse: r = mreturn1/ m if flag else m