给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。
进阶:不要 使用任何内置的库函数,如 sqrt 。
示例 1:
输入:num = 16
输出:true
示例 2:
输入:num = 14
输出:false
思路
和二分查找是一样的,控制好范围,匹配到返回True
解题
class Solution(object):
def isPerfectSquare(self, num):
left = 0
right = num // 2 + 1
while left <= right:
middle = (left + right) // 2
tmp = middle * middle
if tmp < num:
left = middle + 1
elif tmp > num:
right = middle - 1
else:
return True
return False