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