题目描述
给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。
说明:不要使用任何内置的库函数,如 sqrt。
示例 1:
输入:16
输出:True
示例 2:
输入:14
输出:False
思路分析
- 回忆我们自己寻找平方根的过程,猜一个数后求其平方,如果大于要求的数则往小的数找;小于要求的数则往大了的数找,这是典型的二分法的思想。
- 利用二分查找法,实现。很关键,相当于练习二分法啦。
代码示例
class Solution(object):
def isPerfectSquare(self, num):
"""
:type num: int
:rtype: bool
"""
start = 0
end = num
while start <= end:
mid = (start + end) // 2
test = mid ** 2
if test < num:
start = mid + 1
elif test == num:
return True
else:
end = mid - 1
return False