平方根就是一个数字的0.5次方
所以…
class Solution:
def mySqrt(self, x: int) -> int:
x = int(x **0.5)
return x
下面还可以用二分法解决本题,设左极限为0,右极限x 的一半
只要左极限小于右极限
先求出中间值mid
如果中间值mid的平方大于x
则让右极限 - 1
同样,如果mid的平方小于x
则让左极限 + 1
如果mid的平方和x相等则直接返回mid
如果不相等则跳出循环,返回更小的值(right)
class Solution:
def mySqrt(self, x: int) -> int:
if x == 1:
return 1
left = 0
right = x / 2
while left <= right:
mid = (left + right ) // 2
a = mid ** 2
if a < x:
left = mid + 1
elif a > x:
right = mid - 1
elif a == x:
mid = int(mid)
return mid
right = int(right)
return right