class Solution:
def mySqrt(self, x: int) -> int:
if x == 0:
return 0
if x == 1:
return 1
left = 1
right = x /2
ans = -1
# 从 1-x/2的范围内搜索
# 直觉上(x/2)^2 <= x^2
while left <= right:
mid = left + (right-left) // 2
# 避免乘法溢出,改用除法
# mid * mid > x
if mid > x / mid:
right = mid - 1
else:
ans = mid
left = mid + 1
return int(ans)
每日一道Leetcode -69. x 的平方根
最新推荐文章于 2024-10-10 22:59:02 发布