文章目录
Leetcode 69: x的平方根(python)
注:本人文章中有时有来自于各大佬的经验总结,仅供自身复习及学习,并无商业用途,若有时忘记标注作者及出处还请提醒,敬请见谅。
我的思路
由于题目规定不能使用内置函数,所以这里采用二分搜索的方法求解最后的算术平方根。
具体思路为:在0~x的范围内设置low与high,求出mid值。通过比较mid的平方与x的大小来决定low与high的变化。若mid的平方小于x且mid+1的平方大于x,则说明mid是最后平方根的取整值,如果mid+1的平方也小于x,则设置low = mid +1 ; 若mid的平方大于x,则设置high = mid - 1 。 如此循环求解。
class Solution:
def mySqrt(self, x: int) -> int:
low, high = 0, x
while low <= high:
mid = (low + high) // 2
if mid * mid <= x:
if (mid + 1) * (mid + 1) > x:
return mid
else:
low = mid + 1
else:
high = mid - 1