367. 有效的完全平方数(Python)

题目

难度:★☆☆☆☆
类型:数学

给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。

说明:不要使用任何内置的库函数,如 sqrt。

示例

示例 1:
输入:16
输出:True

示例 2:
输入:14
输出:False

解答

这道题是【题目69. x的平方根】的改版,框架可以直接使用。我们使用二分法,将求取的平方根结果进行“是否是整数”的判断即可。

class Solution(object):
    def isPerfectSquare(self, num):
        """
        :type num: int
        :rtype: bool
        """
        left, right = 0, num                    # 初始化左右指针
        while left <= right:                    # 指针位置合法时执行
            mid = left + (right - left) // 2    # 求取中点位置
            if mid * mid == num:                # 如果中点平方恰好为输入数字
                return True                     # 说明输入数字是完全平方数
            elif mid * mid > num:               # 如果中点平方大于输入数字
                right = mid - 1                 # 抛弃考察区间的右半部分
            else:                               # 如果中点平方小于输入数字
                left = mid + 1                  # 抛弃考察区间的左半部分
        return False                            # 如果考察区间内所有数字没有使中点平方等于输入数字,说明输入数字不是完全平方数

如有疑问或建议,欢迎评论区留言~

你可能感兴趣的:(367. 有效的完全平方数(Python))