原题链接
https://leetcode.com/problems/sqrtx/
解题思路
用二分法,首先取start和end的中间mid(向下取整)
如果mid的平方等于x,输出mid;如果小于,start=mid;如果大于,end=mid
重复上一步直到start+1=end,输出start
代码
class Solution(object):
def mySqrt(self, x):
"""
:type x: int
:rtype: int
"""
start = 1
end = x
while start+1!=end:
mid = (start + end) // 2
if mid**2==x:
return mid
elif mid**2<x:
start = mid
else:
end = mid
return start