原题出处:https://leetcode.cn/leetbook/read/top-interview-questions-medium/xwrzwc/
解法一:
class Solution:
def mySqrt(self, x: int) -> int:
left,right = 0,x
result = -1
while left <= right:
mid = (left + right) // 2
if mid * mid <= x:
result = mid
left = mid + 1
else:
right = mid - 1
return result
思路:
二分法,如果当前猜测的数的平方小于等于x,则更新左端点为当前数,如果当前猜测的数的平方大于x,则更新右端点为当前数。