LC 0367 [E] Valid Perfect Square - ALawliet/algorithms GitHub Wiki

class Solution:
    def isPerfectSquare(self, num: int) -> bool:
        # O(sqrt(n))
        for i in range(1, num + 1):
            if i * i == num:
                return True
            if i * i > num:
                return False
            
        # O(logn)
        l, r = 1, num
        while l <= r:
            m = (l + r) // 2
            m2 = mid * mid
            if m2 == num:
                return True
            elif m2 < num:
                l = m + 1
            elif m2 > num:
                r = m - 1
        return False