先考虑不进阶 结果这个只过了5/7的测试用例 放弃 顺序超时 直接二分
class Solution:
def isPerfectSquare(self, num: int) -> bool:
return (num ** 0.5) ** 2 == num
举一反三
和sqrt差不多
思路就是让右坐标作为num的完全平方数 如果num符合题目要求的话,则找到的right+1 的平方 应该与num相等
借助了sqrt寻找一个数的完全平方数的思路 又加了最后一步罢了
class Solution:
def isPerfectSquare(self, num: int) -> bool:
left, right = 0, num - 1
while left <= right:
middle = (left + right) // 2
if middle ** 2 < num:
left = middle +1
else:
right = middle - 1
return (right+1)**2 == num