题目:
Given a positive integer num, write a function which returns True if num is a perfect square else False.
Follow up: Do not use any built-in library function such as sqrt.
给定一数,判断它是否是完全平方数,过程不能使用开平方根的内建函数
这题还蛮像69.的
透过二分搜去找平方根
class Solution: def isPerfectSquare(self, num: int) -> bool: l=1 r=num while l+1!=r: mid=(l+r)//2 if mid*mid==num: return True if mid*mid>num: r=mid if mid*mid<num: l=mid return False
在1~num的範围进行二分搜
设下限l=1跟上限r=num,mid定义为(1+r)//2
mid平方大于x,r降低到mid
mid平方小于x,l提高到mid
一旦mid平方等于x就回传True
直到l和r相邻,若mid平方都不等于num
则num的平方根不为整数,回传False
最后执行时间28ms(faster than 96.71%)
那我们下题见