当前位置: 代码迷 >> 综合 >> LeetCode: 69. X的平方根
  详细解决方案

LeetCode: 69. X的平方根

热度:40   发布时间:2023-10-20 18:50:07.0

解法有三种,1.二分法,2. 基本不等式法(牛顿迭代法)

基本知识是:一个数的根号不可能大于这个数的一半

二分法,无理解难点,就是边界条件需要琢磨一下。

class Solution:def mySqrt(self, x: int) -> int:if x <= 1:return xleft = 1  #1 right = x //2 +1  # 5, 2 while left < right:mid = left + (right - left + 1) //2if mid **2 == x:return midif mid ** 2 < x:left = midelse:right = mid -1 return left

基本不等式法或者称为牛顿迭代法,速度一下就提起来了。原理是 (a + b) /2 >= genhao// >= /ab, 这里的a是x, b是x/r.

class Solution:def mySqrt(self, x: int) -> int:if x <=1:return x r = x / 2while r**2 > x:r = (r + x/r) // 2   # 这里必须是整除return int(r)