题目描述:
给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。
进阶:不要 使用任何内置的库函数,如 sqrt 。
示例1:
输入:num = 16
输出:true
示例2:
输入:num = 14
输出:false
想法:
- 使用2分查找法进行查找
代码如下:
class Solution(object):
def isPerfectSquare(self, num):
"""
:type num: int
:rtype: bool
"""
if num == 1: # 也可以在while判断,改为<=
return True
left = 0
right = num
while left<right:
mid = (left+right)//2
if mid**2 > num:
right = mid
elif mid**2 < num:
left = mid +1
else:
return True
return False