题目
难度:★☆☆☆☆
类型:数学
给定一个正整数 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 # 如果考察区间内所有数字没有使中点平方等于输入数字,说明输入数字不是完全平方数
如有疑问或建议,欢迎评论区留言~