二分查找——x的平方根

今日复习了二分查找,练习了力扣上面的一些题目,记录了其中的一些题目。在关于求平方根或是完全平方数的题目中可以使用二分法。
69. x的平方根
这道题目也可以用二分查找的思想来进行解答。

class Solution:
    def mySqrt(self, x: int) -> int:
        # 求算数平方根 a * a = x
        if x == 1: return 1
        left = 1
        right = x // 2
        while left <= right:
            mid = (left+right) // 2
            if mid * mid == x:
                return mid
            elif mid * mid > x:
                right = mid - 1
            else:
                left = mid + 1
        return right

同理
367. 有效的完全平方数

class Solution:
    def isPerfectSquare(self, num: int) -> bool:
        left = 1
        right = num // 2
        if num == 1: return True
        while left <= right:
            mid = (left+right) // 2
            if mid * mid == num:
                return True
            elif mid * mid < num:
                left = mid + 1
            else:
                right = mid - 1
        return False

在python中可以使用sqrt来返回平方根。

import math
print(math.sqrt(4))

你可能感兴趣的:(刷题,leetcode,算法,数据结构,python,二分查找)