解
try1 ×
class Solution(object):
def isPerfectSquare(self, num):
"""
:type num: int
:rtype: bool
"""
if sqrt(num) * sqrt(num) == num:
return True
else:
return False
分析原因:可能因为sqrt()返回的是小数,有些小数相乘四舍五入和平方之前相等
try2 √
class Solution(object):
def isPerfectSquare(self, num):
"""
:type num: int
:rtype: bool
"""
if int(sqrt(num)) * int(sqrt(num)) == num:
return True
else:
return False
try3 不用sqrt() √
完全平方数的性质?
不会 完全平方数和二分法的关系?中间数的平方?
class Solution(object):
def isPerfectSquare(self, num):
"""
:type num: int
:rtype: bool
"""
l = 0
r = num
while l <=r:
mid = (l+r)>>1
if mid*mid == num:
return True
elif mid * mid > num:
r = mid - 1
else:
l = mid + 1
return False