1.题目

不准使用系统内置函数,请给出一个数的平方根。

2.思想

使用二分法。

  • 注意对特殊值的处理【我在这里翻了两次车】

3.代码

class Solution:
def mySqrt(self, x: int) -> int:
low,high=0,x

# 寻找一个合适的下标,即使二者相等时,也要继续查找
while(low <= high):
mid=(low+high) //2
# print(low,high,mid)
if x == mid * mid:
return mid
if mid == 0: # 如果mid = 0,那么肯定是low=0,high = 1
low = mid+1
continue
if x // mid >= mid: # 如果
low = mid + 1
else:
high = mid - 1

# 结束while时, low > high
# 最后再判断一下
return high