📜  使用二分搜索检查给定数字是否为完全平方数(1)

📅  最后修改于: 2023-12-03 15:22:21.902000             🧑  作者: Mango

使用二分搜索检查给定数字是否为完全平方数

当我们需要判断一个数字是否为完全平方数时,我们可以使用二分搜索来快速地进行判断。

什么是完全平方数

完全平方数是指一个数是另一个整数的平方,比如 9 = 3^2,16 = 4^2。

二分搜索

二分搜索(Binary Search)是指在一个有序数组中查找某个元素的搜索算法。

具体实现可以分为以下几个步骤:

  1. 找到数组的中间元素
  2. 如果中间元素等于目标值,则返回
  3. 如果中间元素大于目标值,则在数组的左半部分继续查找
  4. 如果中间元素小于目标值,则在数组的右半部分继续查找
  5. 重复以上步骤,直到找到目标值或者数组被搜索完毕
代码实现

以下是使用二分搜索检查给定数字是否为完全平方数的代码实现:

def isPerfectSquare(num: int) -> bool:
    if num < 2:
        return True

    left, right = 2, num // 2

    while left <= right:
        mid = (left + right) // 2
        guess = mid * mid
        if guess == num:
            return True
        elif guess > num:
            right = mid - 1
        else:
            left = mid + 1

    return False

以上代码首先判断给定的数字是否小于 2,如果小于 2 则直接返回 True。接着通过设置左边界和右边界,进行二分搜索,直到找到目标值或者搜索完毕。最终返回一个布尔值,表示给定数字是否为完全平方数。

总结

使用二分搜索检查给定数字是否为完全平方数是一种高效的算法,时间复杂度为 O(log n)。当我们需要判断一个数字是否为完全平方数时,可以通过以上代码来实现。