leetcode x的平方根 Python
题目要求
实现 int sqrt(int x) 函数。
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
示例 1:
输入: 4
输出: 2
示例 2:
输入: 8
输出: 2
说明: 8 的平方根是 2.82842...,
解题思路
使用二分查找法,对中间数进行判断,如果mid^2 <= x 且 (mid+1)^2>x,则说明int(mid)即为所求
class Solution:
def mySqrt(self, x: int) -> int:
if x <= 1:
return x
big = x
small = 0
while small <= big:
mid = int((big+small)/2)
if (mid**2) > x and x>=(mid-1)**2:
return int(mid)-1
elif x > mid**2:
small = mid + 1
elif x < (mid-1)**2:
big = mid-1
else:
return int(mid)