思想:
1.lo=0,hi=v=8.将lo+hi然后除以2并且取整为mid
2.将mid*mid和v进行比较,若mid*mid大于v则hi=mid lo不变,反之lo=mid hi不变。再进行将lo+hi然后除以2并且取整为mid直到lo>hi结束。
3.最后返回hi
class Solution:
def mySqrt(self, x):
"""
:type x: int
:rtype: int
"""
lo = 0
hi = x
while lo <= hi:
mid = (hi + lo) // 2
v = mid * mid
if v < x:
lo = mid + 1
elif v > x:
hi = mid - 1
else:
return mid
return hi
这是大神的想法,下面看看小菜鸟的投机取巧
class Solution:
def mySqrt(self, x):
"""
:type x: int
:rtype: int
"""
return int(pow(x, 0.5))
哈哈哈哈哈哈哈。直接调用pow函数